find [検索対象フォルダ/ファイルパス] -type f -name "*[検索文字列]*"
ラベル
RoR
WSUS
MECM
SCCM
環境構築
WindowsServer2016
更新プログラム
AWS
Eclipse
Macports
Python
SSL
Django
GAE
GoCilpse
Hibernate
PeerCache
Route53
SQL
SchUseStrongCrypto
TLS
VPN
WindowsServer2019
bootstrap
emacs
gcc
git
go
haml
react
AmazonSES
Apache Derby
BranchCache
CB2207
CleanCode
Database
Defender
DeltaDownload
Edge
EffectiveJava
GPO
MAILER-DAMON
MCM
RC4
RDS
Report
ReportingServices
SQLServer2017
Spring
StreamCipher
SupportBlog
Vagrant
Wireshark
WorkMail
XSERVER
Xcode
amazon
android
ccmcache
certificate
gdb
golang
oauth
pg
registry
sup
w3wp
webapp
イネーブルメントパッケージ
インプレースアップグレード
バージョン管理
帯域外リリース
有効化パッケージ
東プレ
配布ポイント
2018年5月17日木曜日
2017年11月29日水曜日
Aurora でMaria DB のJDBC Driver を選択した時にでるエラーの対処
まず、RDS の構成は以下の図のようになっています。
この構成のDB に、以下のMySQL 用のJDBC Driver を指定してアクセスしていたのですが、Maria DB のJDBC Driver に変更し、Maria DB のJDBC Driver でしかできないFailover の機能を利用することにしました。
MySQL
コーディングは、DBCP を利用していたので、以下のようにDriver を選択して、上記のURL にアクセスするだけです。
以下のサイトを参照。
新規でユーザ生成時は、GRANT コマンドまで実施すること。
Sample
この構成のDB に、以下のMySQL 用のJDBC Driver を指定してアクセスしていたのですが、Maria DB のJDBC Driver に変更し、Maria DB のJDBC Driver でしかできないFailover の機能を利用することにしました。
MySQL
jdbc:mysql://aurora-cluster.abc.ap-northeast-1.rds.amazonaws.com:3306/dbMaria DB
jdbc:mysql:aurora://aurora-cluster.abc.ap-northeast-1.rds.amazonaws.com:3306/db
コーディングは、DBCP を利用していたので、以下のようにDriver を選択して、上記のURL にアクセスするだけです。
org.apache.commons.dbcp2.BasicDataSource.setDriverClassName( "org.mariadb.jdbc.Driver" );この変更をしたら、以下のエラーが発生しました。
java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failure with primary. No active connection found for master. ) at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2294) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2039) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533)どうやらmaster のdatabase が見つからないようです。
以下のサイトを参照。
https://dev.classmethod.jp/cloud/faster-failover-by-aurora-jdbc-driver/どうやら、アクセス先が間違っているようなので、以下のようClusterEndopoint の次に、カンマを入れて、ReaderEndpoint を指定したら、接続できました。
jdbc:mysql:aurora://aurora-cluster.abc.ap-northeast-1.rds.amazonaws.com:3306,jdbc:mysql:aurora://aurora-cluster.ro-abc.ap-northeast-1.rds.amazonaws.com:3306/dbちなみに、レプリカを立てない構成で上記のようにread only のDB を指定すると、先にでてきたエラーのmaster がreplica になってエラーがでます。
java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failure with primary. No active connection found for replica. )あと、微妙にハマったのは、MySQL のユーザを新規で生成した後、権限を付与しないためにエラーが発生していた。
新規でユーザ生成時は、GRANT コマンドまで実施すること。
Sample
CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON database.table to 'user'@'%' IDENTIFIED BY 'password';権限チェックしたい場合は以下のコマンドで。
SHOW GRANTS FOR 'user'@'%';
2017年8月8日火曜日
2017年7月26日水曜日
google blog にprettyprint を適用する
私のブログでは、Dropbox からprettyprint 用のjs ファイルとcss ファイルを読み込んでいたが、うまく動作できなかったので、以下のやり方に変更。
以下のリンクのloader フォルダ以下にあるjs ファイルと、loader>skins フォルダにあるrun_prettify.js と、sunburst.css を利用する。
https://github.com/google/code-prettify
[ やり方 ]
Blog > テーマ > HTML の編集 で、Blog のHTML を表示する。
<body onload='prettyPrint()'>のちょい上辺りに、以下のコードを追加する。
以下のリンクのloader フォルダ以下にあるjs ファイルと、loader>skins フォルダにあるrun_prettify.js と、sunburst.css を利用する。
https://github.com/google/code-prettify
[ やり方 ]
Blog > テーマ > HTML の編集 で、Blog のHTML を表示する。
<body onload='prettyPrint()'>のちょい上辺りに、以下のコードを追加する。
<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'/> <link href='https://cdn.rawgit.com/google/code-prettify/master/loader/skins/sunburst.css' rel='stylesheet' type='text/css'/>注意:github からの直リンクだとうまく参照できない。CDN から配布されているので、そちらを参照するようにリンクを張る。
EC2 Instance にApache Kafka をインストール
[ 前提 ]
EC2 から、適当にInstance を立ち上げて、Internet に接続できる環境を構築しておく。
今回利用したAMI は、以下の通り。
Amazon Linux AMI 2017.03.1 (HVM), SSD Volume Type - ami-a4c7edb2
[ 本題 ]
Instance にSSH で接続する。 上記のAMI には、Java7 しかInstall されておらず、現状最新版のApache Kafka はJava8 が無いと、以下のException が発生して、動作できないようなので、Java8 をInstall する。
Java は以下のOpenSDK からリリースされているものを利用する。
java-1.8.0-openjdk-devel.x86_64
コマンドは以下の通り。
Install が終わったら、Java7 からJava8 への切り替え作業をする。
コマンドは以下の通り。
ここで、やっとApache Kafka をInstance にダウンロードし、解凍する。ついでにディレクトリも移動しておく。
とりあえずここまできたら、zookeeper をデーモン起動させる。
EC2 から、適当にInstance を立ち上げて、Internet に接続できる環境を構築しておく。
今回利用したAMI は、以下の通り。
Amazon Linux AMI 2017.03.1 (HVM), SSD Volume Type - ami-a4c7edb2
[ 本題 ]
Instance にSSH で接続する。 上記のAMI には、Java7 しかInstall されておらず、現状最新版のApache Kafka はJava8 が無いと、以下のException が発生して、動作できないようなので、Java8 をInstall する。
java.lang.UnsupportedClassVersionError Unsupported major.minor version 52.0
Java は以下のOpenSDK からリリースされているものを利用する。
java-1.8.0-openjdk-devel.x86_64
コマンドは以下の通り。
sudo yum install java-1.8.0-openjdk-devel.x86_64(余談)devel というのが、Oracle のJava のJDK に当たるもののようで、java-1.8.0-openjdk.x86_64 はJRE に当たるものだそうです。
Install が終わったら、Java7 からJava8 への切り替え作業をする。
コマンドは以下の通り。
sudo alternatives --config java一応、"java -version" で、Java8 が利用されているか、version を確認しておく。
ここで、やっとApache Kafka をInstance にダウンロードし、解凍する。ついでにディレクトリも移動しておく。
wget http://ftp.jaist.ac.jp/pub/apache/kafka/0.11.0.0/kafka_2.12-0.11.0.0.tgztar -zxvf kafka_2.12-0.11.0.0.tgz cd kafka_2.12-0.11.0.0
とりあえずここまできたら、zookeeper をデーモン起動させる。
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties最後にKafka を起動させる。
bin/kafka-server-start.sh config/server.propertiesここで以下のException が発生する。原因は、/etc/hosts ファイルに、ip-<AWSのPrivateIP> を解決するためのIP Address の記載が無い。
ava.net.UnknownHostException: ip-<AWSのPrivateIP>: ip-<AWSのPrivateIP>: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at kafka.server.KafkaHealthcheck.$anonfun$register$1(KafkaHealthcheck.scala:60)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
at scala.collection.TraversableLike.map(TraversableLike.scala:234)
at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at kafka.server.KafkaHealthcheck.register(KafkaHealthcheck.scala:58)
at kafka.server.KafkaHealthcheck.startup(KafkaHealthcheck.scala:50)
at kafka.server.KafkaServer.startup(KafkaServer.scala:280)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
at kafka.Kafka$.main(Kafka.scala:65)
at kafka.Kafka.main(Kafka.scala)
そのため、以下の1行をhosts ファイルに追加する。(ip-から始まる方は、${hostname -s} の結果)<AWSのPrivateIP> ip-<AWSのPrivateIP>無事、Kafka が起動できたら、topic を作成してみる。
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic my-topic
2017年6月29日木曜日
EC2インスタンス上のDocker上でインスタンスを起動して失敗する場合
インスタンスの起動失敗時、EC2インスタンスにSSH でログインして、以下のパスのログを確認する。
この設定は、タスク定義を作成する時に指定する。
例えば、Dockerfile で以下のようにJar ファイルをローカルからDocker のインスタンスにコピーした場合、そのコピー先を作業ディレクトリに指定して見るとうまくいくかも。
vi /var/log/ecs/ecs-agent.log-yyyy-MM-dd-xx失敗している原因が不明な場合、インスタンス起動時の作業ディレクトリ(WorkingDirectory)の指定をしていない可能性もある。
この設定は、タスク定義を作成する時に指定する。
例えば、Dockerfile で以下のようにJar ファイルをローカルからDocker のインスタンスにコピーした場合、そのコピー先を作業ディレクトリに指定して見るとうまくいくかも。
COPY test.jar /var/この場合、作業ディレクトリを"/var"と設定しておく。
ECSで管理しているContainerからRDS(Aurora)に接続
ECSで管理しているContainerにWebApplicationをデプロイ後、RDS(Aurora)に接続するまで。
まず、RDSのページから、Aurora インスタンスを起動する。
インスタンスが起動したら、テーブル作成のため、mysql client を利用してログインする。
ローカルPC -> Aurora だと、色々面倒なので、ECS インスタンスにmysql client をinstall して、そこからログインする。
mysql client のinstall は、以下の通り。
Aurora に設定したDB ユーザ、パスワードを入力して、Aurora にログインする。
ログインコマンドは以下の通り。
ログインしたら、適当にテーブルを作成する。
また、WebbApplication からアクセスするログインアカウントが上記と異なる場合、ユーザの作成と権限付与をする必要がある。
コマンドは以下の通り。
とりあえずこれでRDS 側の設定は終わったので、WebApplication からAurora にアクセスしてみる。
ここでは、jdbc ドライバを利用したアクセスを試みる。 コマンドは以下の通り。
これでアクセスできない場合、ネットワークの問題があるはず。
一番簡単な解析方法はtcpdump でパケットを眺める。
Container インスタンスに、ssh でログインする。
ログインしたら、tcpdump をインストール。
コマンドは以下の通り。
実際にtcpdump を取得する。
コマンドは以下の通り。
パケットを取得したら、packet.cap ファイルが実行したフォルダに置かれるので、ローカルPC に持ってきてWireshark などで解析をする。
ssh でcontainer インスタンスに入っているので、ローカルPC にファイルを持ってくるには、SCP コマンドを利用するか、S3 にファイルを一旦アップロードしてからダウンロードするやり方が簡単。
Tera term を利用しているなら、File > SSH SCP でFrom に、"./packet.cap"と入力してReceive ボタンを押せば、ローカルPC にダウンロードできる。
S3 に一旦、アップロードする場合のコマンドは、以下の通り。
まず、RDSのページから、Aurora インスタンスを起動する。
インスタンスが起動したら、テーブル作成のため、mysql client を利用してログインする。
ローカルPC -> Aurora だと、色々面倒なので、ECS インスタンスにmysql client をinstall して、そこからログインする。
mysql client のinstall は、以下の通り。
sudo yum install mysql
Aurora に設定したDB ユーザ、パスワードを入力して、Aurora にログインする。
ログインコマンドは以下の通り。
mysql -u username -p -P 3306 -h ecs-cluster-db.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com
ログインしたら、適当にテーブルを作成する。
また、WebbApplication からアクセスするログインアカウントが上記と異なる場合、ユーザの作成と権限付与をする必要がある。
コマンドは以下の通り。
CREATE USER 'user_name' IDENTIFIED BY 'password'; GRANT ALL ON db_name.* to 'user_name'@'%' identified by 'password'; <- ALL をSELECT にすればRead only user ができる。
とりあえずこれでRDS 側の設定は終わったので、WebApplication からAurora にアクセスしてみる。
ここでは、jdbc ドライバを利用したアクセスを試みる。 コマンドは以下の通り。
jdbc:mysql://ecs-cluster-db.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com:3306/db_name
これでアクセスできない場合、ネットワークの問題があるはず。
一番簡単な解析方法はtcpdump でパケットを眺める。
Container インスタンスに、ssh でログインする。
ログインしたら、tcpdump をインストール。
コマンドは以下の通り。
sudo yum install tcpdumpインストールしたら、ifconfig でeth0 のNIC を確認し、IP を控えておく。
実際にtcpdump を取得する。
コマンドは以下の通り。
sudo tcpdump -s0 -i eth0 -w packet.cap
パケットを取得したら、packet.cap ファイルが実行したフォルダに置かれるので、ローカルPC に持ってきてWireshark などで解析をする。
ssh でcontainer インスタンスに入っているので、ローカルPC にファイルを持ってくるには、SCP コマンドを利用するか、S3 にファイルを一旦アップロードしてからダウンロードするやり方が簡単。
Tera term を利用しているなら、File > SSH SCP でFrom に、"./packet.cap"と入力してReceive ボタンを押せば、ローカルPC にダウンロードできる。
S3 に一旦、アップロードする場合のコマンドは、以下の通り。
aws s3 cp ./packet.cap s3://bucket-name
登録:
投稿 (Atom)