search
LoginSignup
0

posted at

VPC上でVyattaCoreのHA CLUSTERを自動構成する

AWS VPC上でVyatta CoreをHA構成する

Vyattaは、HAの動作にマルチキャストを使用しており、そのままではMAZ上でHAにする事が出来ません。
この問題は、GRE Tunnelを構成し、トンネル内でマルチキャストパケットを疎通させる事で解決します。

この記事について

以下の記事を清書したものになります。
内容は当時(2014.10.11)のものとなります。
https://blog.mikalab.info/archives/643917.html

本スクリプトについて

本スクリプトでは、Vyatta CoreにAWS CLIをインストールし、HA Clusterを半自動で設定します。

スクリプト

使い方

% curl https://raw.githubusercontent.com/tsumura-cloudpack/aws-vyatta-clustering-builder/master/aws-vyatta-clustering-builder.sh > ./aws-vyatta-clustering-builder.sh
% chmod +x ./aws-vyatta-clustering-builder.sh
% ./aws-vyatta-clustering-builder.sh

スクリプトの実行が終了すると、以下のようなコメントとサンプルConfigが表示されます。

**************************
*** CONFIGURE COMPLETE ***
**************************
 
Can use aws-cli after re-login vyatta user.
Please edit setting files.
o /root/.aws/credentials - AWSCLI config.
o /etc/sysconfig/associate-eip - EIP Failover config.
o /etc/sysconfig/associate-nat - ROUTE TABLE Failover config.
o /etc/init.d/failover - Failover Script.
 
Edit AWSCLI credentials file first.
If use IAM role, delete credentials file.
 
Vyatta clustering sample config on vpc.
o vyatta-a - Primary 169.254.0.1/30
o vyatta-c - Secondary 169.254.0.2/30
* local-ip is this instanse ip addr.
---
set system host-name vyatta-a
set interfaces tunnel tun00 address '169.254.0.[1-2]/30'
set interfaces tunnel tun00 encapsulation 'gre'
set interfaces tunnel tun00 local-ip '10.0.0.1' // ※自身のLocalIP
set interfaces tunnel tun00 remote-ip '[Peer LocalIP]'
set interfaces tunnel tun00 multicast enable
  
set cluster interface tun00
set cluster pre-shared-secret mikalab
set cluster group aws
set cluster group aws primary vyatta-a
set cluster group aws secondary vyatta-c

Config内のlocal-ipは、自身のLocalIPを取得して表示しています。
Peer LocalIPとhostname、事前共有鍵、トンネルインターフェースのIPアドレスを書き換えてください。

--nodownload

外部のパッケージのダウンロードをスキップします

--configonly

Python + awscliのインストールとダウンロードをスキップします

動作条件

VyattaCore固有の部分をハードコードしている為、他への転用は難しいかと思います。
例)/bin/sh.distrib

動作の解説

AWS CLIのダウンロード

AWS CLIのインストールを行います。
依存関係で、Python等を同時にインストールします。

awsコマンドのオートコンプリート

次に、シェル上でのawsコマンドのオートコンプリートのため、/etc/profile.d/awscli.shを生成します。
次回ログイン時より、オートコンプリートが有効になります。

コマンド類・設定ファイルの生成

associate-natassociate-eipコマンド、及び設定ファイルを生成します。

associate-natコマンド

NATインスタンス等で使われるROUTE TABLEのエントリを書き換えます。
例えば「0.0.0.0/0」のエントリを書き換える場合、置換処理になる為、事前にエントリを生成する必要があります。

associate-eipコマンド

設定されたEIPを、自身に付け替えます。
この際、PublicIPで接続されているセッションは全て切断される為、クラスタの挙動を監視する場合などは事前にVPC内に踏み台を用意するなどして下さい。

フェールオーバー時のスクリプトの生成

/etc/init.d/failoverを生成します。
フェールオーバーした際にこのコードがVyatta内のHeartbeatからコールされます。
デフォルトでは、associate-natassociate-eipといったコマンド類がコメントアウトされた状態ですので、環境に合わせて適宜編集してください。

参考サイト

VyattaにPython版AWSコマンドラインインターフェース(CLI)をインストールしてみた - suz-lab blog (Archive.org)
https://web.archive.org/web/20141013222921/http://blog.suz-lab.com/2013/08/vyattapythonawscli.html

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
What you can do with signing up
0