LoginSignup
0
0

More than 3 years have passed since last update.

Solr Cloud で可用性を検証した

Posted at

Solr Cloud で可用性を検証した

前回 Solr Cloud を構築ました.
今回は Solr Cloud の可用性を検証しました.

node の管理

node が停止したら Failover するか,node が再起動したら Failback するか実験しました.

1個の node を停止する

全ての node が起動しているときの node 一覧とグラフです.

solr_cloud_nodes_collection_created.png

solr_cloud_graph_collection_created.png

これらの node で shard1 の leader を停止してみます.

vagrant halt node2

node 一覧を見ると shard1 の leader が死んだことがすぐわかります.

solr_cloud_nodes_shard1_leader_dead.png

グラフを見ると shard1 の leader が 192.168.33.22 -> 192.168.33.24 になりました.

solr_cloud_graph_shard1_leader_dead.png

このように node が停止したら自動で leader が切り替わることがわかりました.

1個の node を復旧する

こんどは停止した node を起動します.
また Cloud モードで起動します.

vagrant up node2
vagrant ssh node2 -c "sudo -u solr /opt/solr/bin/solr stop"
vagrant ssh node2 -c "sudo -u solr /opt/solr/bin/solr restart -cloud -s /var/solr/data -p 8983 -z 192.168.33.11:2181,192.168.33.12:2181,192.168.33.13:2181 -h 192.168.33.22"

node 一覧を見ると shard1 の node が復活したことがすぐわかります.

solr_cloud_nodes_shard1_node_revival.png

グラフを見ると node が shard1 に復帰しました.

solr_cloud_graph_shard1_node_revival.png

このように node が再起動したら自動で Solr Cloud に復帰し,shard に割り当てられることがわかりました.

shard の管理

先ほどの例では 1個の node を消しました.
今度は 1個の shard を消したらどうなるか実験します.

1個の shard を停止する

現状の node 一覧とグラフです.

solr_cloud_nodes_shard1_node_revival.png

solr_cloud_graph_shard1_node_revival.png

shard1 の node を全てを停止してみます.

vagrant halt node2
vagrant halt node4

shard1 が死んでますね.
shard2 の node が shard1 の node になるなんてことは起こりませんでした.

solr_cloud_nodes_shard1_dead.png

solr_cloud_graph_shard1_dead.png

この状態で検索すると shard1 がありませんと怒られます.

$ curl -X GET "http://192.168.33.21:8983/solr/examplecollection/select?q=*:*&fl=id&sort=id%20asc&wt=json&indent=on" --noproxy 192.168.33.21
{
  "responseHeader":{
    "status":503,
    "QTime":0,
    "params":{
      "q":"*:*",
      "indent":"on",
      "fl":"id",
      "sort":"id asc",
      "wt":"json"}},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"no servers hosting shard: shard1",
    "code":503}}

shard が死ぬと検索にも影響を及ぼすことがわかりました.

shard を復旧する

先ほどのままではよろしくないので復旧します.
停止している shard に属する node を起動します.
また Cloud モードで起動します.

vagrant up node2
vagrant ssh node2 -c "sudo -u solr /opt/solr/bin/solr stop"
vagrant ssh node2 -c "sudo -u solr /opt/solr/bin/solr restart -cloud -s /var/solr/data -p 8983 -z 192.168.33.11:2181,192.168.33.12:2181,192.168.33.13:2181 -h 192.168.33.22"

node 一覧を見ると shard1 の node が復活しましたが down と表示されています.

solr_cloud_nodes_shard1_down.png

グラフを見ても shard1 の node が down しています.

solr_cloud_graph_shard1_down.png

この状態で検索しても shard1 がないと怒られてしまいます.

$ curl -X GET "http://192.168.33.21:8983/solr/examplecollection/select?q=*:*&fl=id&sort=id%20asc&wt=json&indent=on" --noproxy 192.168.33.21
{
  "responseHeader":{
    "status":503,
    "QTime":0,
    "params":{
      "q":"*:*",
      "indent":"on",
      "fl":"id",
      "sort":"id asc",
      "wt":"json"}},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"no servers hosting shard: shard1",
    "code":503}}

ですがしばらく待つと node が生き返ります.

solr_cloud_nodes_shard1_revival.png

solr_cloud_graph_shard1_revival.png

検索すると全件取得できました.

$ curl -X GET "http://192.168.33.21:8983/solr/examplecollection/select?q=*:*&fl=id&sort=id%20asc&wt=json&indent=on" --noproxy 192.168.33.21
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":108,
    "params":{
      "q":"*:*",
      "indent":"on",
      "fl":"id",
      "sort":"id asc",
      "wt":"json"}},
  "response":{"numFound":32,"start":0,"docs":[
      {
        "id":"0579B002"},
      {
        "id":"100-435805"},
      {
        "id":"3007WFP"},
      {
        "id":"6H500F0"},
      {
        "id":"9885A004"},
      {
        "id":"EN7800GTX/2DHTV/256M"},
      {
        "id":"EUR"},
      {
        "id":"F8V7067-APL-KIT"},
      {
        "id":"GB18030TEST"},
      {
        "id":"GBP"}]
  }}

まとめ

  • node が停止したら自動で leader が切り替わります.
  • node が再起動したら自動で Solr Cloud に復帰し,shard に割り当てられます.
  • shard に属する node が全て停止したら shard は機能しなくなり検索にも影響が出ます.
  • node が全停止した shard で node が復旧すると最初は dead 状態だがしばらくすると復旧し検索できるようになります.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0