LVS + Keepalivedの高可用性を実現する

1つのLVS

1.1 lvsは複数のスケジューリングアルゴリズムを提供します

轮询调度(Round-Robin Scheduling)
加权轮询调度(Weighted Round-Robin Scheduling)
最小连接调度(Least-Connection Scheduling)
加权最小连接调度(Weighted Least-Connection Scheduling)
基于局部性的最少链接(Locality-Based Least Connections  Scheduling)
带 复 制 的 基 于 局 部 性 最 少 链 接  Locality-Based Least  Connections with Replication Scheduling
目标地址散列调度(Destination Hashing Scheduling)
源地址散列调度(Source Hashing Scheduling)
最短预期延时调度(Shortest Expected Delay Scheduling)
不 排 队 调 度 ( Never Queue Scheduling )对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

1.2 LVS 3つの転送ルール

NAT:简单理解,就是数据进出都通过 LVS,性能不是很好。
TUNL:简单理解:隧道 
DR:最高效的负载均衡规则 

1.3 lvsアーキテクチャ

最下層のデータ共有ストレージレイヤー、
フロントエンドロードバランシングレイヤーに共有ストレージ
中間サーバークラスターレイヤーにロードバランサー
、ユーザーにサーバーアレイを使用。すべての内部アプリケーションは透過的で、ユーザーは仮想サーバーが提供する高性能サービスを利用する

2番目のkeepAlivedとは何ですか?

すべてのリクエストはロードバランシングの対象となるため、ロードバランシングは非常に重要であり、ハングアップすることはできません。率直に言うと、lvsを存続させることです。
Keepalivedの機能は、サーバーのステータスを確認することです。Webサーバーがダウンしているか、作業が失敗した場合、Keepalivedはシステムから障害のあるサーバーを検出して削除し、他のサーバーを使用してサーバーの作業を置き換えます。通常の作業後、Keepalivedは自動的にサーバーをサーバーグループに追加します。これらのタスクはすべて、手動による介入なしに自動的に完了します。必要なのは、障害が発生したサーバーを修復することだけです。

2.1動作原理

Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层.
原理如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器
,发送一个ICMP的数据包(既我们平时用的Ping程序).
如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除.
这种情况的典型例子是某台服务器被非法关机。

Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。
Layer4主要以TCP端口的状态来决定服务器工作正常与否。
如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,
则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。
如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。
该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。
此功能使您能够检查应用程序服务器是否正常工作。
MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

2.2 LVの利点

強力な負荷抵抗。lvs作業モードのロジックは非常にシンプルで、ネットワークレイヤー4での作業はリクエストの分散にのみ使用されるため、トラフィックは発生しないため、基本的に効率の点であまり考慮する必要はありません。
完全なデュアルマシンホットバックアップソリューションがあり、ノードに障害が発生するとlvsが自動的に判断するため、システム全体が非常に安定しています。
基本的に、すべてのアプリケーションをサポートできます。lvsはレイヤー4で動作するため、http、データベース、チャットルームなど、ほとんどすべてのアプリケーションの負荷を分散できます。

2.3 lvs負荷分散メカニズム

lvs 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之上
传输层上有 TCP/UDP,lvs 支持 TCP/UDP 的负载均衡
因为 LVS 是四层负载均衡,因此它相对于其它高层负载均衡的解决办法, 
比如 DNS 域名轮流解析、应用层负载的调度、客户端的调度等,它的效 率是非常高的

lvs 的转发可以通过修改 IP 地址实现(NAT 模式)
lvs 的转发还可以通过修改直接路由实现(DR 模式)

3つの構成

3.1環境の準備

1つ:2つのスケジューラー(デュアルマシンホットスタンバイ)
システム:Linux—CentOS 6
IPアドレス:192.168.9.45(メイン)
IPアドレス:192.168.9.46(スタンバイ)
2:2つのWebサーバー
システム:Linux—CentOS 6
IPアドレス:192.168.8.216(web01)
IPアドレス:192.168.8.218(web02)

3つ:win10テストクライアント
1つはイントラネットで使用できます。

3.2 Keepalivedを使用してデュアルシステムホットバックアップを構築する

手順1:ipvsadmを構成し、メインサーバーのkeepalived

[root@dd01 ~]# modprobe ip_vs  //加载ip_vs模块
[root@dd01 ~]# yum install ipvsadm -y  //安装管理软件ipvsadm
[root@dd01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
//安装编译工具与插件
#将keepalived上传到目录中
[root@01 ~]# tar xzvf keepalived-1.2.13.tar.gz 
[root@01 ~]# cd keepalived-1.2.13/
[root@01 keepalived-1.2.13]# ./configure --prefix=/ 
[root@01 keepalived-1.2.13]# make && make install 
[root@01 keepalived-1.2.13]# cp keepalived/etc/init.d/keepalived /etc/init.d/ 
 //加入系统管理服务,如果init.d已存在,那么就不需要复制
[root@01 keepalived-1.2.13]# systemctl enable keepalived 
//开机自启动

[root @ 01 keepalived-1.4.2]#vi /etc/keepalived/keepalived.conf
//構成ファイルを編集

! Configuration File for keepalived
global_defs {
router_id LVS_01 //本服务器的名称
}
vrrp_instance VI_1 { //定义VRRP热备实例
state MASTER //热备状态,MASTER表示主服务器,BACKUP表示从服务器
interface eth1 //承载VIP地址的物理接口
virtual_router_id 51 //虚拟路由器的ID号,每个热备组保持一致
priority 110 //优先级,数值越大优先级越高
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //热备认证信息,每个热备组保持一致
auth_type PASS //认证类型
auth_pass 123456 //密码字符串
}
virtual_ipaddress { //指定漂移地址(VIP),可以有多个
192.168.9.145
}
}
virtual_server 192.168.9.145 80 { //虚拟服务器地址(VIP)、端口
delay_loop 6 //健康检查的间隔时间(秒)
lb_algo rr //轮询(rr)调度算法
lb_kind DR //直接路由(DR)群集工作模式
persistence_timeout 60 //连接保持时间(秒)
protocol TCP //应用服务器采用的是TCP协议
real_server 192.168.8.216 80 { //第一个Web服务器节点的地址、端口
weight 1 //节点的权重
TCP_CHECK { //健康检查方式
connect_port 80 //检查的目标端口
connect_timeout 5 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 3 //重试间隔
}
}
real_server 192.168.8.218 80 { //第二个Web服务器节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@dd01 keepalived]# service keepalived start ##启动服务
[root@dd01 keepalived]# ip addr show dev eth1 //验证绑定了的虚拟地址
[root@localhost keepalived]# ip addr show dev eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:9f:07:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.45/22 brd 192.168.11.255 scope global eth1
    inet 192.168.9.145/32 scope global eth1
    inet6 fe80::20c:29ff:fe9f:731/64 scope link 
       valid_lft forever preferred_lft forever

[root @ dd01 keepalived-1.4.2]#ipvsadm --L // LVS仮想サーバーを表示
ここに画像の説明を挿入

ステップ2:スレーブサーバーを設定する

メインスケジューラと同じ手順192.168.8.146
vi /etc/keepalived/keepalived.conf //構成ファイルを編集します

! Configuration File for keepalived
global_defs {
router_id LVS_02
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 105
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.9.145
}
}
virtual_server 192.168.9.145 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.8.216 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.8.218 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}

[root @ dd02 keepalived]#service keepalived start
[root @ dd02 keepalived]#ipvsadm –L

ステップ3:結果を確認する

マスターサーバーの
Keepalived サービスがオンになっています。スレーブサーバーのステータスを確認してください[root @ dd02 keepalived-1.4.2]#ip addr show dev eth1
ここに画像の説明を挿入

プライマリサーバに障害が発生したシミュレートし、マスタサーバkeepalivedのサービスはDD02を確認するために、サーバから閉鎖状態をDD01
以下の状態を
ここに画像の説明を挿入
ホットスタンバイ完了した構造

3.3 Webノードサーバーの構成

ステップ1:192.168.8.216を構成する192.168.8.218通常アクセスできるnginxサービスを構成します。
ここには書きません。
ここに画像の説明を挿入

ステップ2:DRを構成し、2つのWebサーバーで構成する

#!/bin/bash
#Author:zhang
#Date:2020.3
vip=192.168.9.145
mask='255.255.255.255'
dev=lo:1
case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*) 
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac
sysctl -p &>/dev/null

ifconfig //仮想インターフェースを表示する
ここに画像の説明を挿入

3.4 LVS + Keepalived高可用性クラスターのテスト

クライアントのブラウザーでは、LVS + Keepalivedクラスターのドリフトアドレス(192.168.80.100)を介してWebページコンテンツに正常にアクセスでき、クラスターが正常に構築されます。

2つのWebサーバーがポーリングしていることを確認します
クライアントアクセスhttp://192.168.8.145
//接続保持時間が60秒に設定されているため、1分後にアドレスに再度アクセスしてください

//別のWebサーバーに自動的にポーリングします

3.5メインスケジューラの障害をシミュレートし、結果を確認する

[root @ dd01 keepalived-1.4.2]#systemctl stop keepalived
//メインスケジューラのkeepalivedが動作を停止します

//スケジューラから自動的に切り替え、作業を続行しますhttp://192.168.9.145にアクセスし、結果を表示します//デュアルマシンのホットスタンバイディスプレイ操作。
大胆なスタイル

ここに画像の説明を挿入

4つのシミュレートされたWebサーバー障害

[root @ bb〜]#サービスnginx停止
http://192.168.9.145にアクセス
ここに画像の説明を挿入
すると、成功していることがわかります。

最後に、
LVS + Keepalivedが正常に構築およびテストされました

公開された77元の記事 ウォンの賞賛0 ビュー3232

おすすめ

転載: blog.csdn.net/liaowunonghen/article/details/105069272
おすすめ