サービスの場合、pidファイルは存在しますが、それでもサービスを開始しようとすると失敗します:
$ Sudo service cassandra start
* could not access pidfile for Cassandra
/var/run
(所有者はルート)の下でフォルダーのアクセス許可を確認し、サブフォルダーcassandraはcassandraユーザーが所有していますが、確認してもサービスはpidファイルにアクセスできませんそのpidファイルが存在します。 (pidも割り当てられます)。では、なぜpidfileにアクセスできないと言うのでしょうか?
スタンドアロンプロセスとしてcassandra
を実行するだけで機能しますが、service cassandra start
を使用するだけではありません
$ Sudo ls -l /var/run/cassandra
total 4
-rw-r--r-- 1 cassandra cassandra 4 Mar 18 07:33 cassandra.pid
$ Sudo su
# ls -ld /var/run/cassandra
dr--r----- 2 cassandra cassandra 60 Mar 18 07:38 /var/run/cassandra
Sudo service cassandra start
を使用してこれを機能させるにはどうすればよいですか?
/var/run/cassandra
フォルダーを削除する必要があるため、アクセス権が間違っています。
Sudo rm -rf /var/run/cassandra
または、アクセス許可を手動で修正できます。
Sudo chmod 750 /var/run/cassandra
次に、Cassandraをサービスとして開始します。
Sudo service cassandra start
あなたが見つけることができるファイル許可の指示 here 。
適切な権限とコンテンツで再作成されるため、そのフォルダーを削除しても安全です。ただし、正常に動作したら削除しないでください。データの損失または不正な動作が発生する可能性があります。
chmod 750
は、rwxr-x ---権限として復号化します。これにより、ユーザーは読み取り/書き込み/実行、グループは読み取り/実行、他のユーザーは何も実行できません。 Cassandraの場合、許可を設定するだけで十分です。
このソリューションは、次の方法で実現できます。
$ Sudo vim /etc/init.d/cassandra;
次の行を見つけます。
CMD_PATT="cassandra.+CassandraDaemon"
置換:
CMD_PATT="cassandra"
保存して停止し、再度開始します。サービスはステータスを正しく取得します。 cassandra 2.3でテスト済み
ここのソース: https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04 =(ステップ3を確認)
Cassandra 2.0.9から2.1.4への移行のための私のソリューション
アップグレード後
Sudo apt-get install dsc21
ログファイルに移動します。
tail -f /var/log/cassandra/system.log
cassandra構成ファイルを変更する必要があることがわかります。
カサンドラを止める
Sudo /etc/init.d/cassandra stop
Cassandra構成ファイルに移動します
Sudo vi /etc/cassandra/cassandra.yaml
これらの5行をコメント化するか、削除します。
multithreaded_compaction: false
preheat_kernel_page_cache: false
memtable_flush_queue_size: 4
in_memory_compaction_limit_in_mb: 64
compaction_preheat_key_cache: true
Cassandraを起動します
Sudo /etc/init.d/cassandra start
確認する
nodetool status