CentOS5.9でkeepalivedをインストールして構成します

Keepalivedは、C言語で記述されたルーティングソフトウェアであり、lvsの拡張プロジェクトであり、主にRealServerのヘルスチェック、およびLoadBalanceホストとBackUPホスト間のフェイルオーバーの実装に使用されます。 Keepalivedは、レイヤー3、4、7の交換メカニズムに似たソフトウェアです。これは、通常、レイヤー3、4、7の交換と呼ばれます。この記事では、参考のために主にインストールプロセスを紹介します。

1、 インストールソフトウェアを入手する
ダウンロードリンク:[http://www.keepalived.org/download.html](http://www.keepalived.org/download.html)
最新バージョン1.2.13を直接ダウンロードすることも、wgetから自動的にダウンロードすることもできます。
  # wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz

2、 インストールの前提条件

a。ipvsがインストールされていることを確認します
# 次のように、ipvsadmを実行して、ipvsがインストールされているかどうかを確認します。(現在、ほとんどのLinuxはデフォルトでインストールされています)[root@HKBO ~]# ipvsadm
IP Virtual Server version 1.2.1(size=4096)
Prot LocalAddress:Port Scheduler Flags
 - > RemoteAddress:Port           Forward Weight ActiveConn InActConn

# 現在ロードされているカーネルモジュールをチェックして、ipがあるかどうかを確認します_vsモジュール
[ root@HKBO ~]# lsmod|grep ip_vs 
ip_vs                 1221130 

b。対応する依存関係パッケージをインストールします
# yum -y install gcc gcc-c++ gcc-g77 ncurses-devel bison libaio-devel \
> cmake libnl* libpopt* popt-static openssl-devel

3、 keepalivedをインストールします

[ root@HKBO ~]# more /etc/issue
CentOS release 5.9(Final)

# mkdir /usr/local/keepalived
# cd /usr/local/src
# wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
# tar -xvf keepalived-1.2.13.tar.gz 
# cd keepalived-1.2.13
# . /configure --disable-fwmark --prefix=/usr/local/keepalived
         ...............
Keepalived configuration
------------------------
Keepalived version       :1.2.13
Compiler                 : gcc
Compiler flags           :-g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib                :-lssl -lcrypto -lcrypt 
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : No
fwmark socket support    : No
Use VRRP Framework       : Yes
Use VRRP VMAC            : No
SNMP support             : No
SHA1 support             : No
Use Debug flags          : No

# make && make install
# ls /usr/local/keepalived/  #インストールが完了すると、4つのディレクトリが生成されます
bin  etc  sbin  share

# cd /usr/local/keepalived/etc
[ root@HKBO etc]# tree
.|- - keepalived
||- - keepalived.conf   #keepalivedの構成例
|`- - samples
|  |- - client.pem
|  |- - dh1024.pem
|  |- - keepalived.conf.HTTP_GET.port
|  |- - keepalived.conf.IPv6
|  |- - keepalived.conf.SMTP_CHECK
|  |- - keepalived.conf.SSL_GET
|  |- - keepalived.conf.fwmark
|  |- - keepalived.conf.inhibit
|  |- - keepalived.conf.misc_check
|  |- - keepalived.conf.misc_check_arg
|  |- - keepalived.conf.quorum
|  |- - keepalived.conf.sample
|  |- - keepalived.conf.status_code
|  |- - keepalived.conf.track_interface
|  |- - keepalived.conf.virtual_server_group
|  |- - keepalived.conf.virtualhost
|  |- - keepalived.conf.vrrp
|  |- - keepalived.conf.vrrp.localcheck
|  |- - keepalived.conf.vrrp.lvs_syncd
|  |- - keepalived.conf.vrrp.routes
|  |- - keepalived.conf.vrrp.scripts
|  |- - keepalived.conf.vrrp.static_ipaddress
|  |- - keepalived.conf.vrrp.sync
|  |- - root.pem
|  `- - sample.misccheck.smbcheck.sh
|- - rc.d
|`- - init.d
|  `- - keepalived
`- - sysconfig
 `- - keepalived

# cd /usr/local/keepalived/sbin
# . /keepalived --help            #keepalivedで助けを得る
Usage:./keepalived [OPTION...]-f,--use-file=FILE          Use the specified configuration file
 - P,--vrrp                   Only run with VRRP subsystem
 - C,--check                  Only run with Health-checker subsystem
 - l,--log-console            Log messages to local console
 - D,--log-detail             Detailed log messages
 - S,--log-facility=[0-7]     Set syslog facility to LOG_LOCAL[0-7]-V,--dont-release-vrrp      Don't remove VRRP VIPs and VROUTEs on daemon stop
 - I,--dont-release-ipvs      Don't remove IPVS topology on daemon stop
 - R,--dont-respawn           Don't respawn child processes
 - n,--dont-fork              Don't fork the daemon process
 - d,--dump-conf              Dump the configuration data
 - p,--pid=FILE               Use specified pidfile for parent process
 - r,--vrrp_pid=FILE          Use specified pidfile for VRRP child process
 - c,--checkers_pid=FILE      Use specified pidfile for checkers child process
 - v,--version                Display the version number
 - h,--help                   Display this help message

# mkdir /etc/keepalived/
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/  
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

# service keepalived restart
Stopping keepalived:[FAILED]
Starting keepalived:[  OK  ]

# service keepalived status
keepalived(pid  12092) is running...

# chkconfig keepalived on

# ip addr
1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 inet6 ::1/128 scope host 
  valid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether 00:50:56:84:04:2c brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.66/24 brd 192.168.1.255 scope global eth0
 inet 192.168.200.16/32 scope global eth0
 inet 192.168.200.17/32 scope global eth0
 inet 192.168.200.18/32 scope global eth0
 inet6 fe80::250:56ff:fe84:42c/64 scope link 
  valid_lft forever preferred_lft forever
3: sit0:<NOARP> mtu 1480 qdisc noop 
 link/sit 0.0.0.0 brd 0.0.0.0

4、 keepalived.confに関連する構成アイテム

[ root@HKBO keepalived]# more keepalived.conf
! Configuration File for keepalived

# グローバル定義ブロックには、メール定義部分が含まれています。
global_defs {
 notification_email {
  [email protected]
  [email protected]
  [email protected]
   }
 notification_email_from [email protected]
 smtp_server 192.168.200.1
 smtp_connect_timeout 30
 router_id LVS_DEVEL  //ロードバランサー識別子。ネットワーク内で一意である必要があります}

# ロードバランサー間のフェイルオーバーを担当するVRRPインスタンス定義ブロック
vrrp_instance VI_1 {
 state MASTER                       //MASTERとBACKUPの状態は2つだけで、マスターはMASTER、スレーブはBACKUP、大文字のinterfaceeth0を使用します。//監視対象のネットワークインターフェイス
 virtual_router_id 51//同じインスタンスでの仮想_router_idは同じでなければなりません
 priority 100//優先度を定義します。数値が大きいほど、優先度が高くなります。
 advert_int 1//MASTERとBACKUPロードバランサー間の同期チェックの時間間隔(秒単位)
 authentication {//認証タイプとパスワード
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {//仮想IPアドレス仮想_ipaddress,192以上を定義できます.168.200.16192.168.200.17192.168.200.18}}

# 仮想サーバー定義ブロック
virtual_server 192.168.200.100443{//仮想サーバーを定義する
 delay_loop 6//delay_ループ、ヘルスチェック間隔(秒単位)
 lb_algo rr                                                     //ロードスケジューリングアルゴリズム、ここではrrに設定されています。つまり、ポーリングアルゴリズムであり、インターネットアプリケーションは多くの場合wlcまたはrrを使用します。
 lb_kind NAT                                                    //負荷分散転送ルール。通常、DRが含まれます,NAT,TUN 3種類、私の計画では、すべてDRを使用しています
 nat_mask 255.255.255.0//サブネットマスク
 persistence_timeout 50//セッション保持時間(秒単位)(セッションを維持するために時間を適切に延長できます)
 protocol TCP                                                   //転送プロトコルタイプには、tcpとudpの2種類があります
                                                                                    
 real_server 192.168.201.100443{//実サーバーのIPとポート
  weight 1//デフォルトは1です,0は無効です
  SSL_GET {                                                                   
   url {                                                                   
    path /                                                                
    digest ff20ad2481f97b1754ef3e12ecd3a9cc                               
            }
   url {
    path /mrtg/
    digest 9b3a0c85a887a256d6939da88aabd8cd
            }
   connect_timeout 3
   nb_get_retry 3
   delay_before_retry 3}}}

virtual_server 10.10.10.21358{
 delay_loop 6
 lb_algo rr 
 lb_kind NAT
 persistence_timeout 50
 protocol TCP

 sorry_server 192.168.200.2001358

 real_server 192.168.200.21358{
  weight 1
  HTTP_GET {
   url { 
    path /testurl/test.jsp
    digest 640205b7b0fc66c1ea91c463fac6334d
            }
   url { 
    path /testurl2/test.jsp
    digest 640205b7b0fc66c1ea91c463fac6334d
            }
   url { 
    path /testurl3/test.jsp
    digest 640205b7b0fc66c1ea91c463fac6334d
            }
   connect_timeout 3
   nb_get_retry 3
   delay_before_retry 3}}

 real_server 192.168.200.31358{
  weight 1
  HTTP_GET {
   url { 
    path /testurl/test.jsp
    digest 640205b7b0fc66c1ea91c463fac6334c
            }
   url { 
    path /testurl2/test.jsp
    digest 640205b7b0fc66c1ea91c463fac6334c
            }
   connect_timeout 3
   nb_get_retry 3
   delay_before_retry 3}}}

5、 アクティブおよびスタンバイのkeepalivedを構成します

a、アクティブおよびスタンバイのkeepalivedを構成します
# メイン、keepalivedは主に以下にリストされています.confの違いの部分
vrrp_instance VI_1 {
 state MASTER
 interfaceeth0
 virtual_router_id 51
 priority 100
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {192.168.1.220192.168.1.230}}

# 準備された、以下は主にkeepalivedをリストします.confの違いの部分
vrrp_instance VI_1 {
 state BACKUP 
 interfaceeth0
 virtual_router_id 51
 priority 90 
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {192.168.1.220192.168.1.230}}

b、メインとスタンバイのキープアライブをテストします
# メインサーバーでkeepalivedサービスを開始します
[ root@MASTER ~]# service keepalived start
Starting keepalived:[  OK  ][root@SZ-SYS-APP01 ~]# ip addr
1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 inet6 ::1/128 scope host 
  valid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether 00:50:56:84:1f:37 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.65/24 brd 192.168.1.255 scope global eth0
 inet 192.168.1.220/32 scope global eth0    #220と230の仮想IPを見ることができます
 inet 192.168.1.230/32 scope global eth0
 inet6 fe80::250:56ff:fe84:1f37/64 scope link 
  valid_lft forever preferred_lft forever
3: sit0:<NOARP> mtu 1480 qdisc noop 
 link/sit 0.0.0.0 brd 0.0.0.0

# スタンバイサーバーでkeepalivedサービスを開始します
[ root@BACKUP ~]# service keepalived start
Starting keepalived:[  OK  ]
# 以下のクエリ結果では、仮想IP220および230はバックアップサーバーに表示されません。
[ root@HKBO ~]# ip addr
1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 inet6 ::1/128 scope host 
  valid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether 00:50:56:84:04:2c brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.66/24 brd 192.168.1.255 scope global eth0
 inet6 fe80::250:56ff:fe84:42c/64 scope link 
  valid_lft forever preferred_lft forever
3: sit0:<NOARP> mtu 1480 qdisc noop 
 link/sit 0.0.0.0 brd 0.0.0.0

# メインサービスのkeepalivedサービスを閉じ、VIPがバックアップサービスにドリフトするかどうかを確認します
[ root@MASTER ~]# service keepalived stop
Stopping keepalived:[  OK  ][root@MASTER ~]# ip addr    #閉じた後、コマンドは220と230の仮想IPがメインサーバーに存在しなくなったことを確認できます。
1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 inet6 ::1/128 scope host 
  valid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether 00:50:56:84:1f:37 brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.65/24 brd 192.168.1.255 scope global eth0
 inet6 fe80::250:56ff:fe84:1f37/64 scope link 
  valid_lft forever preferred_lft forever
3: sit0:<NOARP> mtu 1480 qdisc noop 
 link/sit 0.0.0.0 brd 0.0.0.0

# このとき、ドリフトするVIPアドレスはスタンバイサーバーで表示されていました
[ root@BACKUP ~]# ip addr
1: lo:<LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 inet6 ::1/128 scope host 
  valid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether 00:50:56:84:04:2c brd ff:ff:ff:ff:ff:ff
 inet 192.168.1.66/24 brd 192.168.1.255 scope global eth0
 inet 192.168.1.220/32 scope global eth0
 inet 192.168.1.230/32 scope global eth0
 inet6 fe80::250:56ff:fe84:42c/64 scope link 
  valid_lft forever preferred_lft forever
3: sit0:<NOARP> mtu 1480 qdisc noop 
 link/sit 0.0.0.0 brd 0.0.0.0

# メインサーバーのkeepalivedサービスが再度開始されると、VIPは検証なしで自動的にメインサーバーにドリフトします。
# Author : Leshami
# Blog   :http://blog.csdn.net/leshami

6、 デュアルマスターキープアライブを構成する

デュアルマスターkeepalivedモードは、実際には、単一の障害点を回避するための相互のマスターとバックアップです。
# アクティブおよびスタンバイのkeepalivedを構成します
MasterA:192.168.1.65, VirtualIP:192.168.1.220
MasterB:192.168.1.66, VirtualIP:192.168.1.230
# メイン、keepalivedは主に以下にリストされています.confの違いの部分
vrrp_instance VI_1 {
 state MASTER
 interfaceeth0
 virtual_router_id 51
 priority 100
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {192.168.1.220}}

vrrp_instance VI_2 {
 state BACKUP
 interfaceeth0
 virtual_router_id 52
 priority 90
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {192.168.1.230}}

# 準備された、以下は主にkeepalivedをリストします.confの違いの部分
vrrp_instance VI_1 {
 state BACKUP
 interfaceeth0
 virtual_router_id 51
 priority 90
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {192.168.1.220}}

vrrp_instance VI_2 {
 state MASTER
 interfaceeth0
 virtual_router_id 52
 priority 100
 advert_int 1
 authentication {
  auth_type PASS
  auth_pass 1111}
 virtual_ipaddress {192.168.1.230}}

# 上記の構成ファイルからわかるように、vrrpインスタンスが実際に追加されます
# 検証プロセスはわずかです

7、 コンパイル時エラーいいえSO_MARK

# コンパイル中にSOが発生しない場合_次のように、MARKエラー
# . /configure 
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
          ...........
checking for nl_socket_alloc in-lnl-3... no
checking for nl_socket_modify_cb in-lnl... no
configure: WARNING: keepalived will be built without libnl support.
checking for kernel version...2.6.18
checking for IPVS syncd support... yes
checking for kernel macvlan support... no
checking whether SO_MARK is declared... no
configure: error: No SO_MARK declaration in headers

# 無効化を増やすことができます-解決するfwmarkパラメーター
- - disable-fwmark        compile without SO_MARK support

Recommended Posts

CentOS5.9でkeepalivedをインストールして構成します
Centos6.5はmongodbをインストールして構成します
Centos5.2でLAMPをコンパイルしてインストールします
CentOS8-NFSサービスをインストールして構成する
Python3をインストールし、CentOS8でansible
CentOS6.8でdockerをインストールして使用する
CentOS最小限のインストールとTIPSの構成
CentOS7の下にPython3とPyをインストールします
Centos7にFreeIPAをインストールして構成する
CentOS6.3の下にMono3.2とJexus5.4をインストールします
CentOS7でlibmodbusライブラリをコンパイルしてインストールします
32ビットおよび64ビットのCentOS6.0でMono2.10.8およびJexus5.0をインストールします
centos7をインストールして接続します
CentOS7の下にmysql5.7をインストールします
Centos7の下にActiveMQをインストールします
CentOS7の下にPostgreSQL12をインストールします
VMwareにCentOSをインストールする
Centos7にmysqlをインストールします
centos6.8でランプを構成する
Centos7の下にJenkinsをインストールします
MariaDBCentos7の下にMariaDBをインストールします
CentOS6.5の下にmysql5.1をインストールします
centos7インストールkeepalived問題
VMware FusionはCentOS7をインストールし、ネットワークを構成します
CentOS7にElasticsearchをインストールして構成する方法
CentOS8にVNCをインストールして構成する方法
CentOS8にRedisをインストールして構成する方法
CentOSの下でyumを介してsvnと構成をインストールします
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
CentOS8にRedmineをインストールして構成する方法
centos7はpython3とipythonをインストールします
Linuxを理解し、CentOSをインストールする
CentOs7.3はNginx1.9.9をコンパイルしてインストールします
CentOS7はMonoとMonoDevelopをインストールします
CentOS6.5はJava8とTomcat8をインストールします
CentosはGitをコンパイルしてインストールします
CentOS7で静的IPを構成する
CentOS6.9でOracle11gR2データベースをインストールします
LinuxにMySQLをインストールする(CentOS 7)
ubuntuはGitLabをインストールして構成します
CentOS7はpython3とpip3をインストールします
CentOS6の下にJavaJDK8をインストールします
CentOS7はOracleJDKとJREをインストールします
CentOS6.5はJava8とTomcat8をインストールします
CentOS6はJira7をインストールしてクラックします
CentOS6.5はJava8とTomcat8をインストールします
Centos7はntp-4.2.8p11をコンパイルしてインストールします
CentOS6.9はpythonをコンパイルしてインストールします
CentOS6のインストールとコンフルエンスのクラック
CentOS6はpython3をコンパイルしてインストールします
CentOS7の下にMongoDBデータベースをインストールします
CentOS6はJira7をインストールしてクラックします
linuxインストールmongodbでのCentOS6.8
CentOS7の下にMesosチュートリアルをインストールします
CentOSの下のyumにPHPをインストールし、php-fpmサービスを構成します
CentOS8にNFSサーバーをインストールして構成する方法
LinuxcentosでLnmpシェルスクリプトをコンパイルしてインストールします
Centos7インストールjdkおよびパッケージサービスサービス
CentOS7yumはmysqlをインストールして起動します
ubuntu / debianの下にdigをインストールして使用します