0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ApacheGeodeのクラスタを構築する

Last updated at Posted at 2018-06-11

はじめに

前回の投稿にて、簡単なGeodeの構築をおこないました。
今回は、Geodeでのクラスタを構築します。公式にクラスタ構築のチュートリアルがあるのですが、1サーバないでクラスタを組むという事をやっていたり、色々余計な説明もあるので、実際にサーバを分散させた状態で構築する場合を想定し、最低限の設定で構築する手順を記載していきます。

構築のイメージ

サーバーは4台使用したレプリケーション環境を構築します。locatorが2台、serverが2台、これにより、1台落ちたとしても、サービスを継続可能なクラスタとなります。(性能要件を満たせるかは別問題ですが)
スクリーンショット 2018-06-11 13.50.55.png

Locatorの起動

locatorを起動します。単独起動の時とは違い、クラスタを構成するlocatorのホスト名とportを起動時に指定します。

# サーバー01
gfsh>start locator --name=locator1 --locators=xxx01.yahoo.co.jp[10334],xxx02.yahoo.co.jp[10334]
Starting a Geode Locator in /xxxx/geode/locator1...

# サーバー02
gfsh>start locator --name=locator2 --locators=xxx01.yahoo.co.jp[10334],xxx02.yahoo.co.jp[10334]
Starting a Geode Locator in /xxxx/geode/locator...

この時、nameはクラスタ内で一意である必要があります。台数の多いクラスタを構築する場合は、サーバ名を指定すると運用はやりやすいと思います。

Serverの起動

同様にserverを起動していきます。locator起動と同様にlocatorのホスト名とportを指定します。locatorは起動済みである必要があります。

# サーバー03
gfsh>start server --name=server1 --locators=xxx01.yahoo.co.jp[10334],xxx02.yahoo.co.jp[10334]
Starting a Geode Server in /xxxx/geode/server1...

# サーバー04
gfsh>start server --name=server2 --locators=xxx01.yahoo.co.jp[10334],xxx02.yahoo.co.jp[10334]
Starting a Geode Server in /xxxx/geode/server2...

スケールアウトの際は、serverに関しては、locatorを指定するだけで、クラスタに追加することができます。
また、クライアント側は、serverが追加されたとしても、locatorのみ知っておけばよいため影響を受けません。

クラスタの確認

サーバー01に戻り、listコマンドでクラスタが構築されたか確認しましょう。

# サーバー01
gfsh>list members
  Name   | Id
-------- | ----------------------------------------------------------------
locator2 | xxx.xxx.xxx.xx2(locator2:22489:locator)<ec><v5>:1024
server1  | xxx.xxx.xxx.xx3(server1:17404)<v6>:1024
server2  | xxx.xxx.xxx.xx4(server2:5771)<v7>:1024
locator1 | xxx.xxx.xxx.xx1(locator:12002:locator)<ec><v0>:1024 [Coordinator]

Regionの作成とget,put

regionの作成はlocatorから実行します。

# サーバー01
gfsh>create region --name=region1 --type=REPLICATE

gfsh>list region
List of regions
---------------
region1

これでクラスタ内にregionが作成されました。
データを入れてみます。

# サーバー01
gfsh>put --region=region1 --key=key2 --value=value2
Result      : true
Key Class   : java.lang.String
Key         : key2
Value Class : java.lang.String
Old Value   : <NULL>


gfsh>get  --region=region1 --key=key2
Result      : true
Key Class   : java.lang.String
Key         : key2
Value Class : java.lang.String
Value       : value2

サーバダウンを試す

では、試しにサーバが落ちてもクラスタが維持できるか見てみましょう。

gfsh>stop server --name=server2

serverが1台抜けた状態で、クラスタは維持されています。先程の値も取得できることが分かります。

gfsh>list members
  Name   | Id
-------- | ----------------------------------------------------------------
locator2 | xxx.xxx.xxx.xx2(locator2:22489:locator)<ec><v5>:1024
server1  | xxx.xxx.xxx.xx3(server1:17404)<v6>:1024
locator1 | xxx.xxx.xxx.xx1(locator1:12002:locator)<ec><v0>:1024 [Coordinator]

gfsh>get  --region=region1 --key=key2
Result      : true
Key Class   : java.lang.String
Key         : key2
Value Class : java.lang.String
Value       : value2

まとめ

最小限のクラスタ構築ができました。
今回は、コマンドラインでクラスタを構築しましたが、実際の開発現場では、規模にもよりますが、デプロイを自動化していたり、オートスケール環境を実装したいケースがあると思います。locatorsや、regionの設定をファイルで配ることも可能です。実際の運用では、メモリ関連の設定や、expire関連、多数のRegionなど多数の設定があるため、コマンドラインで運用するのは非効率になってきます。
次は、データを管理する上で切っても切り離せない、Regionについて解説していきます。

環境情報

Java1.8
Apache Geode1.6
ヤフー社内のクラウドを使用、OSはLinux

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?