ビルドし:LVS + keepalivedの可用性の高いWebサービスをクラスタ環境で

関連するサービスのより多くのテクノロジーは、関連する技術文書は、以下のリンクを参照して詳細に説明しました:

詳細にCentOSの7ロードバランシング設定DR(ダイレクトルーティング)モード。

NAT(アドレス変換)モードのバランスを取る詳細な構成CentOSに7ロード。

詳細LVS負荷分散クラスタ。

+ keepalivedのボーエンは、可用性の高いウェブDR / NATクラスタモード、構築することができる結合上記の可用性の高いWebサービスのクラスタを構築する+ DR環境をkeepalivedのためにこのブログを。

これは主ポストを構成し、本番環境で構成され、以下のように、コピーすることができ、環境があります。

ビルドし:LVS + keepalivedの可用性の高いWebサービスをクラスタ環境で

まず、環境分析:

1,2-スケジューラウェブと直接外部とのネットワークアドレス、ネットワーク通信を持つ2つのノード。共有ストレージ用

セキュリティ、計画するネットワーク環境内の雑貨店やWebサーバ・ノード、そのウェブノードとスケジューラ、2が存在しなければなりません

NICは、インターフェースとオーバー。

2、私は限られた資源にここにいる、と構成を容易にするため、スケジューラおよびウェブは2つのノードだけだった、ウェブをご覧ください。

小さな下部需要状況の量は、十分な、しかし、アクセス要求が比較的大きい場合、次の3つのスケジューラの最小値と、それぞれに構成

Webホスト、2つのノードのみであればウェブは、その後、ダウンがあるので、もし、比較的大きなを訪問し、残りのもの

アクセス要求は、唯一の子は確かにあるためサージのキャリーができませんでしたが、殺されました。

3、インストール関連サービスの準備ができて、システムのイメージ。

VIPに加えて4、自己の設定ファイアウォールポリシーおよびIPアドレス(I、ここで直接ファイアウォールオフ)。

図5は、自動的にIP_vsモジュールを呼び出しますkeepalivedの、手動でロードする必要はありません。

第二に、最終結果:

1は、クラスタVIPに複数のクライアントアクセスは、同じページを取得します。

2、マスタースケジューラはダウンした後、クラスタのVIPアドレスは自動的にドリフトする(バックアップ)スケジューラすべて、この時点では、

スケジューラからタスク割り当てによるスケジューリング。マスタースケジューラが実行を再開すると、クラスタのVIPアドレスは自動的に転送されます

マスタースケジューラは、マスタースケジューラは、バックスケジューラから、バックアップの状態を操作し続けます。

。3、ウェブノードがダウンし、keepalivedの健康チェックが自動的にWebノードプールを削除するには、検出されました

ダウンタイムのノードは、ウェブノードのリカバリ操作まで、自動的にWebノードプールに追加されます。

第三に、我々は構築し始めました。

図1に示すように、コンフィギュレーションマスタースケジューラ(LVS1):

[root@LVS1 ~]# yum -y install keepalived ipvsadm                #安装所需工具
[root@LVS1 ~]# vim /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@LVS1 ~]# sysctl -p                  #刷新一下
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@LVS1 ~]# cd /etc/keepalived/
[root@LVS1 keepalived]# cp keepalived.conf keepalived.conf.bak          #备份配置文件
[root@LVS1 keepalived]# vim keepalived.conf               #编辑keepalived配置文件

! 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_DEVEL1       #本服务器的名称改一下,在所有调度器名称里必须唯一。
}

vrrp_instance VI_1 {
    state MASTER             #设置为主调度器
    interface ens33            #承载VIP地址的物理网卡接口根据实际情况改一下
    virtual_router_id 51           
    priority 100                  
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        200.0.0.100                  #指定漂移IP地址(VIP),可以有多个。
    }
}

virtual_server 200.0.0.100 80 {                       #改为VIP地址及所需端口
    delay_loop 6
    lb_algo rr                             #根据需要改一下负载调度算法,rr表示轮询。
    lb_kind DR                          #设置工作模式为DR(直接路由)模式。
   ! persistence_timeout 50      #为了一会测试看到效果,将连接保持这行前加“ !”将该行注释掉。
    protocol TCP

real_server 200.0.0.4 80 {       #一个web节点的配置,real_server 200.0.0.4 80 {  ..... }是复制下面的。复制过来后,更改一下节点IP地址即可。
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 200.0.0.3 80 {             #一个web节点的配置,改动完成后,有几个节点就复制几份real_serve 200.0.0.3 80  {  ..... }到该行的上方,最好别往下面粘贴,以防大括号丢失。
        weight 1
        TCP_CHECK {
            connect_port 80                #添加该行,以配置连接端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 #以下还有很多配置项,我这里有98行,全部删除即可,若不删除时重启服务可能报错。 
 [root@LVS1 ~]# systemctl restart keepalived              #重启服务
 [root@LVS1 ~]# systemctl enable keepalived              #设置开机自启动

この時点で、マスタースケジューラの構成が完了しています!

2、スケジューラからのコンフィギュレーション(LVS2):

[root@LVS2 ~]# yum -y install ipvsadm keepalived           #安装所需工具
[root@LVS2 ~]# scp [email protected]:/etc/sysctl.conf /etc/              
#将主调度器的/proc参数文件复制过来
[email protected]'s password:            #输入主调度器的用户密码
sysctl.conf                                 100%  566   205.8KB/s   00:00    
[root@LVS2 ~]# sysctl -p               #刷新
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@LVS2 ~]# scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/   
#将主调度器的keepalived配置文件复制过来,稍微改动即可。
[email protected]'s password:                     #输入主调度器的用户密码
keepalived.conf                             100% 1053     2.5MB/s   00:00    
[root@LVS2 ~]# vim /etc/keepalived/keepalived.conf             #编辑复制过来的配置文件
#若两台服务器都是ens33网卡的话,那么所需该的只有以下三项(其他项保持默认):
router_id LVS_DEVEL2        #将route_id改为不一样的。route_id必须是唯一的。
state BACKUP              #状态改为BACKUP,注意大小写。
priority 90        #优先级要比主调度器小,并且不可与其他备份调度器优先级冲突。
[root@LVS2 ~]# systemctl restart keepalived           #启动服务
[root@LVS2 ~]# systemctl enable keepalived          #设置开机自启动

所望であれば、このように、また、スケジューラから(バックアップ)スケジューラ構成から上記によれば、スケジューラからの展開を複数構成されています。

3、ノード構成web1と:

[root@Web1 ~]# cd /etc/sysconfig/network-scripts/
[root@Web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0           #复制一份回环地址的配置文件
[root@Web1 network-scripts]# vim ifcfg-lo:0           #编辑回环地址,以承载群集的VIP。
DEVICE=lo:0            #更改网卡名称
IPADDR=200.0.0.100            #配置群集的VIP
NETMASK=255.255.255.255             #子网掩码必须为4个255。
ONBOOT=yes
#保留上面四行配置项即可,多余的删除。
[root@Web1 network-scripts]# ifup lo:0          #启动回环接口
[root@Web1 ~]# ifconfig lo:0                    #查看VIP配置是否正确
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 200.0.0.100  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[root@web1 ~]# route add -host 200.0.0.100 dev lo:0              #添加VIP本地访问路由记录
[root@web1 ~]# vim /etc/rc.local               #设置开机自动,添加这条路由记录              
                ................................
/sbin/route add -host 200.0.0.100 dev lo:0
[root@web1 ~]# vim /etc/sysctl.conf                  #调整/proc响应参数,写入下面六行
                    ...................
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@web1 ~]# sysctl -p                #刷新一下
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@web1 ~]# yum -y install httpd             #安装http服务
[root@Web1 ~]# echo 111111111111 > /var/www/html/index.html           #准备测试网页文件
[root@Web1 ~]# systemctl start httpd             #启动http服务
[root@Web1 ~]# systemctl enable httpd             #设置开机自启动

この時点で、最初のWebノードが設定されています。

4、ノード構成WEB2。

[root@Web2 ~]# scp [email protected]:/etc/sysconfig/network-scripts/ifcfg-lo:0 \
/etc/sysconfig/network-scripts/                    #复制web1节点的lo:0配置文件
The authenticity of host '200.0.0.3 (200.0.0.3)' can't be established.
ECDSA key fingerprint is b8:ca:d6:89:a2:42:90:97:02:0a:54:c1:4c:1e:c2:77.
Are you sure you want to continue connecting (yes/no)? yes           #输入yes
Warning: Permanently added '200.0.0.3' (ECDSA) to the list of known hosts.
[email protected]'s password:           #输入web1节点用户的密码
ifcfg-lo:0                                  100%   66     0.1KB/s   00:00    
[root@Web2 ~]# ifup lo:0                  #启用lo:0
[root@Web2 ~]# ifconfig lo:0          #确认VIP无误
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 200.0.0.100  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[root@Web2 ~]# scp [email protected]:/etc/sysctl.conf /etc/       #复制内核文件
[email protected]'s password:                     #输入web1节点用户的密码
sysctl.conf                                 100%  659     0.6KB/s   00:00   
[root@Web2 ~]# sysctl -p                     #刷新一下
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@Web2 ~]# route add -host 200.0.0.100 dev lo:0            #添加VIP本地访问路由记录
[root@Web2 ~]# vim /etc/rc.local                  #设置开机自动,添加这条路由记录
[root@web1 ~]# yum -y install httpd             #安装http服务
[root@Web1 ~]# echo 22222222222 > /var/www/html/index.html           #准备测试网页文件
[root@Web1 ~]# systemctl start httpd             #启动http服务
[root@Web1 ~]# systemctl enable httpd             #设置开机自启动

これまでのところ、WEB2も設定が完了し、現在はクラスター効果かどうかをテストするために、クライアントを使用します。

5、クライアントアクセスのテスト:

ビルドし:LVS + keepalivedの可用性の高いWebサービスをクラスタ環境で

ビルドし:LVS + keepalivedの可用性の高いWebサービスをクラスタ環境で

同じページにアクセスする場合は、設定上の排他エラーの場合には、複数のWebページを開く、または更新するには少し長く待って、接続を維持する時間であるかもしれないので、とても時間がかかりますことができます。

テスト、これだけの負荷分散の効果かどうかをテストするために、各ノード異なるWebページファイルの準備、そして今効果がされているために、その共有ストレージサーバーを構築するために、すべてのノードが共有ストレージサーバーから読み込むためのWebページがありますWebクライアントに同じ文書を提供するために、クライアントが利用可能なドキュメント、。

ここでは簡単なセットアップ共有ストレージ・サーバを使用すると、高可用性のストレージ・サーバーを構築する必要がある場合、あなたは私のブログに焦点を当てることができ、次のとおりです。warrent、私は将来の記事で可用性の高いストレージ・サーバーを構築する方法を記述します。

6、NFS共有ストレージサーバーを構成します:

[root@NFS /]# yum -y install nfs-utils rpcbind                   #安装相关软件包
[root@NFS /]# systemctl enable nfs               #设置为开机自启动
[root@NFS /]# systemctl enable rpcbind          #设置为开机自启动
[root@NFS /]# mkdir -p /opt/wwwroot               #准备共享目录
[root@NFS /]# echo www.baidu.com > /opt/wwwroot/index.html              #新建网页文件
[root@NFS /]# vim /etc/exports                         #设置共享目录(该文件内容默认为空)
/opt/wwwroot   192.168.1.0/24(rw,sync,no_root_squash)           #写入该行
[root@NFS /]# systemctl restart rpcbind        #重启相关服务,需注意服务启动的先后顺序
[root@NFS /]# systemctl restart nfs
[root@NFS /]# showmount -e               #查看本机共享的目录
Export list for NFS:
/opt/wwwroot 192.168.2.0

7、すべてのノードが共有ストレージ、Webサーバをマウントします。

1)WEB1構成サーバノード。

[root@Web1 ~]# showmount -e 192.168.1.5            #查看存储服务器共享的目录
Export list for 192.168.1.5:
/opt/wwwroot 192.168.1.0/24 
[root@Web1 ~]# mount 192.168.1.5:/opt/wwwroot /var/www/html/         #挂载至网页根目录
[root@Web1 ~]# df -hT /var/www/html/                       #确认挂载成功
文件系统                 类型  容量  已用  可用 已用% 挂载点
192.168.1.5:/opt/wwwroot nfs4   39G  5.5G   33G   15% /var/www/html
[root@Web1 ~]# vim /etc/fstab               #设置自动挂载 
                   .........................
192.168.1.5:/opt/wwwroot  /var/www/html   nfs   defaults,_netdev 0 0
#写入上面内容

2)WEB2構成サーバノード。

[root@Web2 ~]# showmount -e 192.168.1.5            #查看存储服务器共享的目录
Export list for 192.168.1.5:
/opt/wwwroot 192.168.1.0/24 
[root@Web2 ~]# mount 192.168.1.5:/opt/wwwroot /var/www/html/         #挂载至网页根目录
[root@Web2 ~]# df -hT /var/www/html/                       #确认挂载成功
文件系统                 类型  容量  已用  可用 已用% 挂载点
192.168.1.5:/opt/wwwroot nfs4   39G  5.5G   33G   15% /var/www/html
[root@Web2 ~]# vim /etc/fstab               #设置自动挂载 
                   .........................
192.168.1.5:/opt/wwwroot  /var/www/html   nfs   defaults,_netdev 0 0
#写入上面内容

8、クライアントアクセスのテスト再び:

次のようにこの時間は、どんなにクライアントのリフレッシュ、同じページに表示されません。

ビルドし:LVS + keepalivedの可用性の高いWebサービスをクラスタ環境で

9、Viewコマンドの一部を伴います:

。1)VIPスケジューラに、スケジューラは、VIPアドレス(VIPアドレスバックアップスケジューラで見つけ出す)を参照して、VIPアドレスを運ぶ物理インターフェイスを照会します。

[root@LVS1 ~]# ip a show dev ens33              #查询承载VIP地址的物理网卡ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> ate UP groupn 1000
    link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff
    inet 200.0.0.1/24 brd 200.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 200.0.0.100/32 scope global ens33                   #VIP地址。
       valid_lft forever preferred_lft forever
    inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2)ウェブクエリノードがどのようなものです:

[root@LVS1 ~]# ipvsadm -ln                  #查询web节点池及VIP
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
   RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.0.0.100:80 rr
  200.0.0.3:80                 Route   1      0          0         
  200.0.0.4:80                 Route   1      0          0      

3)アナログWEB2ダウンノードとマスタースケジューラ、およびVIPクエリとバックアップノード上のウェブ再びスケジューラ:

[root@LVS2 ~]# ip a show dev ens33       #可以看到VIP地址已经转移到了备份调度器上
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> 
    link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff
    inet 200.0.0.2/24 brd 200.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 200.0.0.100/32 scope global ens33                      #VIP地址。
       valid_lft forever preferred_lft forever
    inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@LVS2 ~]# ipvsadm -ln                   #Web2节点宕机后,就查不到了。
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.0.0.100:80 rr
  -> 200.0.0.3:80                 Route   1      0          0         

    #当主调度器或Web2节点恢复正常后,将会自动添加到群集中,并且正常运行。

4)ログメッセージのディスパッチャのフェイルオーバーを確認します。

[root@LVS2 ~]# tail -30 /var/log/messages

チーは生き.....................

おすすめ

転載: blog.51cto.com/14154700/2416771