LVS+KeepAlived心得
ここ数日lvs+keepalivedをしていますが、その過程を明日更新する詳細を大まかに書きます.
一、基礎環境の配置は5台の仮想マシンを申請しましたテストだけなので構成は無視します
ノードタイプ
IPアドレス計画
ホスト名
を選択します.
lvs-master
eth0:10.240.210.41
lvs-master
public ip
eth1:192.168.1.100
priv1
private ip
eth0:0:10.240.210.46
なし
vitural ip
lvs-master-back
eth0:10.240.210.42
lvs-master-back
public ip
eth1:192.168.1.101
priv2
private ip
RealServerA
eth0:10.240.210.43
lvs-master-back
public ip
lo:0:10.240.210.46
なし
vitural ip
RealServerB
eth0:10.240.210.44
RealServerB
public ip
lo:0:10.240.210.46
なし
vitural ip
lvsスペア
eth0:10.240.210.45
RealServerB
public ip
2台のlvsはprivate ipであるeth 1を利用して心拍数をした.
VIP、すなわち虚IPは、スクリプトを書くことができ、スクリプトは後で公表され、keepalivedサービスのみであれば、keepalivedのために書かなくてもよい.confで配合できます.
lo:0:10.24.240.210.46(このipも虚ipスクリプトと注意事項は後述)
簡単に説明すると、実はlvsを3台作るだけで十分で、ネットカードも1枚でいいです.結局、どの会社もそんなに多くの実力を持っているわけではありません.このように無駄なlvsをするのは実力があれば、ソフトとハードを結合することができます.F 5+lvsの効果はもっといいです.なぜかというと、主にこのlvsを系統的に理解したいと思っています.
2台のlvsはデュアルマシンのホットスペアを行い、真ん中にeth 1がドキドキし、相手のマシンの在庫状態をリアルタイムで監視することができます.
2台のRSサーバーも専門のethではなくlo:0を作ったのは、主に実際の状況と結びつけて、コストを下げて、1枚のネットカードで十分で、VIPをlo口に縛ることができて、しかもlo口はもっと安全で、downしにくいからです.
lvs-masterエンドバインドVIPスクリプト:
そしてvip.shをrcに加える.local:
lvs-master-backはVIPを縛る必要はありませんが、もちろん後期に問題が発生してデバッグをするときはバインドしなければなりません.後で話します.
RSAおよびRSB側バインディングVIPスクリプト:
そしてlo.shをrcに加える.local:
二、lvs+keepalived
2.1.1 LVSはIPVSモジュールによって実現される.IPVSはLVSクラスタシステムのコアソフトウェアであり、主にユーザの要求がロードスケジューラに到達した後、どのように各RSノードに要求を送信するか、RSノードがどのようにユーザにデータを返すかなどに用いられる.
私が使っているシステムはRedhat 6です.5,システムカーネルはデフォルトでLVS機能をサポートする.
modprobe-l|grep ipvsでkernelがLVSのモジュールをサポートしているかどうかを確認できます
上記のような出力がある場合は、システムカーネルがIPVSモジュールをデフォルトでサポートしていることを示します.
2.1.2 IPVS管理ソフトをインストールして、ここでyumを使って、手編みを使わないで、簡単で速いです.
そして実行
ヘルプメッセージが表示されたら、IPVSが正常にインストールされたことを示します.
2.2 keepalivedのインストール
最新バージョンはkeepalived-1.2.13です.tar.gz
--sysconfはkeepalivedプロファイルのインストールパスを指定します.--with-kernel-dirというパラメータはkeepalivedをカーネルにコンパイルするのではなく、カーネルソースコードのヘッダファイル、すなわちincludeディレクトリを使用することを指定します.LVSを使用する場合のみ、このパラメータを使用する必要があります.他の場合は必要ありません.
インストールが完了したら、次の操作を行います.
keepalivedが正常にインストールされたことを示します.
一、基礎環境の配置
ノードタイプ
IPアドレス計画
ホスト名
を選択します.
lvs-master
eth0:10.240.210.41
lvs-master
public ip
eth1:192.168.1.100
priv1
private ip
eth0:0:10.240.210.46
なし
vitural ip
lvs-master-back
eth0:10.240.210.42
lvs-master-back
public ip
eth1:192.168.1.101
priv2
private ip
RealServerA
eth0:10.240.210.43
lvs-master-back
public ip
lo:0:10.240.210.46
なし
vitural ip
RealServerB
eth0:10.240.210.44
RealServerB
public ip
lo:0:10.240.210.46
なし
vitural ip
lvsスペア
eth0:10.240.210.45
RealServerB
public ip
2台のlvsはprivate ipであるeth 1を利用して心拍数をした.
VIP、すなわち虚IPは、スクリプトを書くことができ、スクリプトは後で公表され、keepalivedサービスのみであれば、keepalivedのために書かなくてもよい.confで配合できます.
lo:0:10.24.240.210.46(このipも虚ipスクリプトと注意事項は後述)
簡単に説明すると、実はlvsを3台作るだけで十分で、ネットカードも1枚でいいです.結局、どの会社もそんなに多くの実力を持っているわけではありません.このように無駄なlvsをするのは実力があれば、ソフトとハードを結合することができます.F 5+lvsの効果はもっといいです.なぜかというと、主にこのlvsを系統的に理解したいと思っています.
2台のlvsはデュアルマシンのホットスペアを行い、真ん中にeth 1がドキドキし、相手のマシンの在庫状態をリアルタイムで監視することができます.
2台のRSサーバーも専門のethではなくlo:0を作ったのは、主に実際の状況と結びつけて、コストを下げて、1枚のネットカードで十分で、VIPをlo口に縛ることができて、しかもlo口はもっと安全で、downしにくいからです.
lvs-masterエンドバインドVIPスクリプト:
#!/bin/bash
VIP=10.240.210.46
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up
/sbin/route add -host $VIP dev eth0:0
そしてvip.shをrcに加える.local:
echo "/root/vip.sh" >> /etc/rc.local
lvs-master-backはVIPを縛る必要はありませんが、もちろん後期に問題が発生してデバッグをするときはバインドしなければなりません.後で話します.
RSAおよびRSB側バインディングVIPスクリプト:
#!/bin/bash
VIP="10.240.210.46"
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
そしてlo.shをrcに加える.local:
echo "/root/lo.sh" >> /etc/rc.local
二、lvs+keepalived
2.1.1 LVSはIPVSモジュールによって実現される.IPVSはLVSクラスタシステムのコアソフトウェアであり、主にユーザの要求がロードスケジューラに到達した後、どのように各RSノードに要求を送信するか、RSノードがどのようにユーザにデータを返すかなどに用いられる.
私が使っているシステムはRedhat 6です.5,システムカーネルはデフォルトでLVS機能をサポートする.
modprobe-l|grep ipvsでkernelがLVSのモジュールをサポートしているかどうかを確認できます
[root@lvs_master ~]# modprobe -l | grep ipvs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko
kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
上記のような出力がある場合は、システムカーネルがIPVSモジュールをデフォルトでサポートしていることを示します.
2.1.2 IPVS管理ソフトをインストールして、ここでyumを使って、手編みを使わないで、簡単で速いです.
yum install ipvsadm
そして実行
ipvsadm --help
ヘルプメッセージが表示されたら、IPVSが正常にインストールされたことを示します.
2.2 keepalivedのインストール
最新バージョンはkeepalived-1.2.13です.tar.gz
tar keepalived-1.2.13.tar.gz
cd keepalived-1.2.13
./configure --sysconf=/etc \
>--with-kernel-dir=/usr/src/kernels/2.6.32-431.29.2.el6.x86_64
make
make install
ln -s /usr/local/sbin/keepalived /sbin
--sysconfはkeepalivedプロファイルのインストールパスを指定します.--with-kernel-dirというパラメータはkeepalivedをカーネルにコンパイルするのではなく、カーネルソースコードのヘッダファイル、すなわちincludeディレクトリを使用することを指定します.LVSを使用する場合のみ、このパラメータを使用する必要があります.他の場合は必要ありません.
インストールが完了したら、次の操作を行います.
keepalived --help
keepalivedが正常にインストールされたことを示します.