Linux 負載均衡(一) LVS + Keepalived
来源:互联网 发布:ubuntu 挂载 编辑:程序博客网 时间:2024/06/07 00:47
一) 架構
二) 安裝 real server (web主機)
分別在 172.24.42.124 和 172.24.42.125 中完成以下操作
安裝 httpd
<span style="font-size:10px;"># yum install -y httpd# /etc/init.d/httpd start# cd /var/www/html# echo "172.24.42.124" > keep.html </span><span style="font-size:18px;"> </span>
備注:keep.html 的內容為web主機的ip地址,以便通過虛擬IP訪問時能知道具體連上的是哪一臺.
編寫 realserver.sh, 內容如下
SNS_VIP=172.24.42.126source /etc/rc.d/init.d/functionscase "$1" instart)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";;*) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
執行 realserver.sh start 啟動 lvs 客戶端
# ./realserver.sh start
三) 安裝 ipvsadm & keepalived
分別在 172.24.42.122 和 172.24.42.123 完成以下操作
下載 ipvsadm-1.27.tar.gz 后 進行安裝
# tar zxf ipvsadm-1.27.tar.gz# cd ipvsadm-1.27; make; make install
下載 keepalived-1.2.10.tar.gz 后進行安裝
# tar zxf keepalived-1.2.10.tar.gz# cd keepalived-1.2.10# yum install -y libnfnetlink-devel openssl-devel# ./configure --prefix=/usr/local/keepalived
make; make install
執行 link
# ln -s /usr/local/keepalived/etc/keepalived/ /etc/# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
分別獲取兩臺 realserver 主機的 keep.html 的 MD5值
# /usr/local/keepalived/bin/genhash -s 172.24.42.124 -p 80 -u /keep.htmlMD5SUM = f27498879019e5123512819c82fb7c4f# /usr/local/keepalived/bin/genhash -s 172.24.42.125 -p 80 -u /keep.htmlMD5SUM = f9b71fc29a750aca13934513f050234e分別記下 MD5SUM 值, 在下一個步驟會用到
global_defs { router_id LVS_DEVEL}vrrp_sync_group bl_group { group { VI_1 }}vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.24.42.126/24 }}virtual_server 172.24.42.126 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 172.24.42.124 80 { weight 1 HTTP_GET { url { path /keep.html digest f27498879019e5123512819c82fb7c4f } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 172.24.42.125 80 { weight 1 HTTP_GET { url { path /keep.html digest f9b71fc29a750aca13934513f050234e } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }}
備注:
(1) 配置文件中的 digest 后面的值是上一個步驟記錄的 midsum 值
(2) 配置文件對于負載均衡主備兩臺服務器(172.24.42.122 / 172.24.42.123)來說, 有兩處不一樣:
172.24.42.122 (主) :
第一處: state MASTER
第二處: priority 100
172.24.42.123 (備) :
第一處: state BACKUP
第二處: priority 90
啟動 keepalived 服務
# /etc/init.d/keepalived restart
執行 ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 172.24.42.126:80 rr persistent 50 -> 172.24.42.124:80 Route 1 0 0 -> 172.24.42.125:80 Route 1 0 0
四) 驗證
1) 分別在不同的 client 上訪問 http://172.24.42.126/keep.html 會顯示真實訪問的服務器 ip (172.24.42.124 或 172.24.42.125)
(具備分配機制)
2) 顯示分配連接數
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 172.24.42.126:http rr persistent 50 -> 172.24.42.124:http Route 1 0 5 -> 172.24.42.125:http Route 1 0 2網上的資料介紹 使用 lb_algo rr 時會平均分配, 但實際測試并沒有這樣 (待進一步分析)
3) 將real server 172.24.42.124 服務器斷網, 再在多臺 cient 上訪問 http://172.24.42.126/keep.html
都會得到 172.24.42.125 的結果 (具備故障檢測功能)
恢復 172.24.42.124 的網絡后, 就會自動恢復分配機制
4) 再將負載均衡(主)服務器 172.24.42.122 斷網, 仍然可以訪問 http://172.24.42.126/keep.html,
得到 172.24.42.125 的結果 (當主出現故障后, 備自動接替主的工作)
恢復 172.24.42.122 的網絡后,負載均衡(主)服務器會重新接管虛擬IP 172.24.42.126
172.24.42.123 再進次入待命狀態.
重要筆記:
1) 配置 keepalived.conf 時, 所有大括號 { 前面要留一個空格, 否則無法正確識別,
2) 當負載均衡有兩臺或以上服務器時, 只有當主服務器 down 了以后, 備服務器才開始工作.
使用 # ip a 可以查看虛擬IP 工作在哪一臺負載均衡服務器
3) keepalived 服務日志存放在 /var/log/messages 中
4) LVS負載均衡有三種模式
LVS-DR (Direct Routing): 直接路由模式, 實際使用較多
LVS-NAT (Network Address Translaton) 地址轉換,因負載較重, 使用較少
LVS-TUN (IP Tunneling) 應用于遠程(外網)
5) LVS 負載均衡的調度算法
rr (Round Robin) 輪循調度
wrr (Weighted Round Robin) 加權輪循
DH (Destination Hashing) 目標地址散列
SH (Source Hashing) 源地址散列
LC (Least Connections) 最小鏈接
WLC (Weighted Least Connections) 加權最少鏈接 (推薦使用)
SED (Shortest Expected Delay0 最短的期望的延時
NQS (Never Queue Scheduling0 最少隊列調度
LBLC (Locality-Based Least Connections) 基于局部性的最少連接
LBLCR (Locality-Based Leat Connections Witch Replication) 帶復制的基于局部最少連接
- Linux 負載均衡(一) LVS + Keepalived
- LVS+keepalived负载均衡
- LVS+keepalived负载均衡
- LVS+keepalived负载均衡
- lvs+keepalived 负载均衡
- lvs+keepalived 负载均衡
- LVS+KEEPALIVED负载均衡
- lvs keepalived 负载均衡
- LVS+keepalived负载均衡
- 负载均衡(LVS+keepalived)
- LVS+keepalived负载均衡
- 负载均衡 lvs+keepalived
- LVS+keepalived负载均衡
- lvs +keepalived负载均衡
- linux集群系列(一):LVS+Keepalived以DR模式实现负载均衡
- LVS+keepalived搭建负载均衡学习手札(一)
- CentOS7 搭建LVS+keepalived负载均衡(一)
- linux LVS (keepalived+ipvsadm)负载均衡搭建
- 【深度学习】【框架概述1】【卷积神经网络-进化史】从LeNet到AlexNet
- 第十一周 二叉树构造算法的验证
- Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
- 第11周项目1-验证算法(1)层次遍历算法的验证
- 在MAC下的QT配置openCV
- Linux 負載均衡(一) LVS + Keepalived
- 使用Android Studio发布开源库到Bintray/Jcenter(新)
- 在微信里点击链接无跳转
- 学校学习ios教程笔记,第十二节初识ios控制器中的标签视图控制器
- redis安装部署 启动脚本的编写
- Linux内核源码分析-基树处理- radix_tree
- JAVA线程池问题
- linux部署 启动停止jboss常用操作
- 在数据仓库中维度建模的认识