LVS + Keepalived高可用性クラスター(理論+実際の展開)

序文

この高度な情報ベースのIT時代では、企業の生産システム、業務運営、販売とサポート、および日常の管理は、コンピューターの情報とサービスにますます依存するようになり、高可用性(HA)テクノロジーアプリケーションの需要が大幅に増加しています。継続的で中断のないコンピュータシステムまたはネットワークサービスを提供するため。
Keepalivedを使用して、IPアドレスのフェイルオーバーを含むデュアルシステムホットバックアップ、およびLVS高可用性クラスターのホットバックアップアプリケーションを実装します。

1. Keepalivedデュアルシステムホットバックアップの基本

1.1 Keepalivedの概要とインストール

1.1.1、Keepalivedホットバックアップ方式

KeepalivedはVRRPホットバックアッププロトコルを採用して、Linuxサーバーのマルチマシンホットバックアップ機能を実現しています

VRRP、仮想ルーティング冗長プロトコルは、ルーターのバックアップソリューションです。

複数のルーターがホットバックアップグループを形成し、共有仮想IPアドレスを介して外部にサービスを提供します

各ホットバックアップグループで同時にサービスを提供するメインルータは1つだけであり、他のルータは冗長状態です。

現在オンラインのルーターに障害が発生した場合、他のルーターは設定された優先順位に従って仮想IPアドレスを自動的に引き継ぎ、サービスを提供し続けます
ここに画像の説明を挿入

1.1.2、Keepalivedインストールおよびサービス制御

LVSクラスター環境で適用する場合は、lipvsadm管理ツール
YUMを使用してKeepalived をインストールし、Keepalived
サービス有効にする必要もあります。

[root@localhost ~]# yum -y install keepalived ipvsadm

1.2。Keepalivedを使用してデュアルシステムホットバックアップを実現する

Keepalivedはマルチマシンホットバックアップを実現でき、各ホットスタンバイグループは複数のサーバーを持つことができます。最も一般的に使用されるのはデュアルマシンホットバックアップです。

デュアルシステムホットバックアップのフェイルオーバーは、さまざまなアプリケーションサーバーに適した仮想IPアドレスのドリフトによって実現されます。

この展開では、Webサービスに基づくデュアルマシンホットバックアップを実装します
ここに画像の説明を挿入

1.2.1、メインサーバーの構成

Keepalievd構成ディレクトリーは/ etc / keepalievd /にあります
keepalievd.confはメイン構成ファイルです

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs{
    
    }区段指定全局参数
vrrp_instance实例名称{
    
    }区段指定VRRP热备参数
注释文字以“!”符号开头
目录samples/,提供了许多配置样例作为参考
常用配置选项
router_id HA_TEST_R1: 本路由器(服务器)的名称
vrrp_instance VI_1:定义VRRP热备实例
state MASTER:热备状态,MASTER表示主服务器
interface ens33:承载VIP地址的物理接口
virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
priority 100:优先级,数值越大优先级越高
advert_int 1:通告间隔秒数(心跳频率)
auth_type PASS:认证类型
auth_pass 123456:密码字串
virtual_ipaddress{
    
    vip}:指定漂移地址(VIP),可以有多个,多个漂移地址以逗号分隔

構成に問題がないことを確認し、Keepalivedサービスを開始すると、ipコマンドを使用して表示できます。

[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址

1.2.2、スタンバイサーバーの構成


Keepalived バックアップサーバーの構成は、3つのオプションでマスター構成とは異なりますrouter_id:フリー名の
状態に設定:バックアップの
優先順位に設定:マスターサーバーの値よりも低い値
他のオプションはマスターと同じです

1.2.3、デュアルシステムホットバックアップ機能のテスト

デュアルシステムホットバックアップの効果をテストします。
メインマシンとバックアップマシンの両方でWebサービスが有効になっていて、内容は同じです。
メインサーバーのネットワークカードを連続して無効にしてから有効にし、次のテストを実行します

テスト1:pingを使用して19216810.72の接続を検出する
テスト2:htt:/192168.10.72にアクセスして、可用性とコンテンツの変更を確認する
テスト3:ログファイル/ var / log / messagesの変更を確認する

2. LVS + Keepalived高可用性クラスターの実際のデプロイメント

2.1。実験環境

VMware 5サーバーの
IPアドレス計画:
ドリフトアドレス(VIP):192.168.100.100
プライマリスケジューラ:192.168.100.21
セカンダリスケジューラ:192.168.100.20
WEBサーバー1:192.168.100.22
WEBサーバー2:192.168.100.23
ストレージサーバー:192.168 100.24

2.2、メインスケジューラを構成する

2.2.1、/ proc応答パラメーターの調整

[

root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0 

2.2.2、keepalivedパラメータを調整する

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
    
    
   router_id HA_TEST_R1
}
vrrp_instance VI_1 {
    
    
   state MASTER
   interface ens33
   virtual_router_id 1
   priority 100
   advert_int 1
   authentication {
    
    
      auth_type PASS
      auth_pass 123456
   }
   virtual_ipaddress {
    
    
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
    
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence 60
    protocol TCP

    real_server 192.168.100.22 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.23 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:11:0d:16 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 brd 192.168.100.100 scope global noprefixroute ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::3069:1a3d:774b:18f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.3、スレーブスケジューラを構成する

2.3.1、/ proc応答パラメーターの調整

[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p     
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

2.3.2、keepalivedパラメータを調整する

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
    
    
   router_id HA_TEST_R2
}
vrrp_instance VI_1 {
    
    
   state BACKUP
   interface ens33
   virtual_router_id 1
   priority 99
   advert_int 1
   authentication {
    
    
      auth_type PASS
      auth_pass 123456
   }
   virtual_ipaddress {
    
    
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {
    
    
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence 60
    protocol TCP

    real_server 192.168.100.22 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.23 80 {
    
    
        weight 1
        TCP_CHECK {
    
    
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:48:b8:83 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::e438:b533:985e:cf94/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.4、ストレージサーバーを構成する

まず、nfs-utilsとrpcbindがインストールされているかどうかを確認します。これらがyum
インストールされていない場合は、インストール後に2つのサービスを開始します。

[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# echo "this is www.51xit.top" > /opt/51xit/index.html
[root@localhost ~]# echo "this is www.52xit.top" > /opt/52xit/index.html

2.5、ノードサーバーの構成

2.5.1、仮想IPアドレス(VIP)の構成

ファイアウォールとコア保護の両方がオフになっています。nfs-utilsがインストールされているかどうかを確認してください

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig
        省略部分内容
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.100.100  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)
        省略部分内容
[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.100 dev lo:0

[root@localhost network-scripts]# route add -host 192.168.100.100 dev lo:0

2.5.2、/ proc応答パラメーターの調整

[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@localhost network-scripts]# sysctl -p

以前に構成された2つのノードサーバーは同じです

2.5.3、httpdマウントテストページのインストール

2つのノードサーバーを別々に下にマウントします

[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Aug  6 12:23:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=a1c935eb-f211-43a5-be35-2a9fef1f6a89 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/cdrom /mnt iso9660 defaults 0 0
192.168.100.24:/opt/51xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd

ログインが正常かどうかをテストする
ここに画像の説明を挿入

[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/52xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Aug  6 12:23:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=a1c935eb-f211-43a5-be35-2a9fef1f6a89 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/cdrom /mnt iso9660 defaults 0 0
192.168.100.24:/opt/52xit/ /var/www/html/ nfs defaults,_netdev 0 0
[root@localhost ~]# systemctl start httpd

ログインが正常かどうかをテストする
ここに画像の説明を挿入

2.6、実験的検証

2.6.1、メインスケジューラをテストする

パケットキャプチャツールを開くと、192.168.100.21のマスタースケジューラがVRRPパケットを送信していることがわかります
ここに画像の説明を挿入
。実際のマシンのブラウザ192.168.100.100
ここに画像の説明を挿入
と入力し、
ここに画像の説明を挿入
マスタースケジューラが更新または再入力されるまでしばらくお待ちください

2.6.2、スレーブスケジューラのテスト

メインサーバーのkeepadliveを停止する

[root@localhost keepalived]# systemctl stop keepalived

パケットキャプチャツールを開くと、192.168.100.20スレーブスケジューラがVRRPパケットを送信していることがわかります
ここに画像の説明を挿入
。実際のマシンのブラウザ192.168.100.100と入力し、
ここに画像の説明を挿入
1分待って更新するか再入力し
ここに画像の説明を挿入
てください。スケジューラは正常です!

おすすめ

転載: blog.csdn.net/weixin_48191211/article/details/108749220