======================參考地址 ======================
https://www.cnblogs.com/MacoLee/p/5856858.html
===========================lvs nat=================
======================LVS DR=======================================
=========dr 模式 二層負(fù)載均衡(改了mac)=============
注意:1.添加網(wǎng)卡(負(fù)載均衡端52機(jī))
2.誰的路由條目在上就是dip 另一個(gè)就是vip(route -n)
3臺機(jī)器
192.168.44.52 負(fù)載均衡器 虛擬VIP 192.168.44.66 DIP 52
192.168.44.50 web1 lo為192.168.44.66/32
192.168.44.51 web2 lo為192.168.44.66/32
1.====在兩個(gè)web安裝web服務(wù)
yum -y install nginx -y
====修改主機(jī)內(nèi)容
vim /usr/share/nginx/html/index.html
web1
vim /usr/share/nginx/html/index.html
web2
啟動服務(wù)
systemctl start nginx
2.====給兩臺web服務(wù)器的lo網(wǎng)卡設(shè)置子網(wǎng)掩碼為32為的vip
ifconfig lo:0 192.168.44.66/32 或者永久
[root@web1 network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.44.66
NETMASK=255.255.255.255
BROADCAST=192.168.44.66
ONBOOT=yes
NAME=loopback
3.====子網(wǎng)掩碼最好 的32位發(fā)送過去 設(shè)置內(nèi)核參數(shù)
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
4.讓兩臺web服務(wù)器不收到廣播 忽悠arp響應(yīng)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
5.注意:誰的路由條目在上就是dip 另一個(gè)就是vip(route -n)
6.設(shè)置lvs路由條目 ipvsadm -Ln(查條目)位置192.168.44.52
yum install -y ipvsadm (lvs 用戶態(tài)管理工具)
[root@52 network-scripts]# cat ifcfg-ens37
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=192.168.44.66
GATEWAY=192.168.44.2
DNS1=8.8.8.8
NETMASK=255.255.255.255
[root@]ipvsadm -A -t 192.168.44.vip:80 -s rr
[root@]ipvsadm -a -t 192.168.44.vip:80 -r 192.168.44.50:80 -g
[root@]ipvsadm -a -t 192.168.44.vip:80 -r 192.168.44.51:80 -g
[root@]ip addr add dev ens33 192.168.44.66/32
-A 添加virtual server
-t 指定使用tcp協(xié)議
-s 指定策略為rr
-r 真實(shí)的服務(wù)器[Real-Server:port]
-g 直接路由
7.查看方式兩種
1.命令行:elinks --dump http://192.168.44.66/index.html
2.瀏覽器地址 192.168.44.66/index.html
抓包軟件
tcpdump -i ens33 icmp -v -nn
tcpdump -i ens33 tcp and port 80 -v -nn
8.讓配置永久生效
ipvsadm-save > /etc/sysconfig/ipvsadm-config
ipvsadm -S
MIP是靜態(tài)一對一的雙向地址映射忆谓。
VIP是地址+端口的映射,將不同地址的不同端口秋泳,映射到規(guī)定地址的規(guī)定端口潦闲。
DIP分2種一種是PAT,另一種就是用地址池中的地址映射迫皱。和CISCO的NAT相同歉闰。
tcpdump -i ens33 icmp -v -nn
===============要解決三個(gè)問題:=========================
要解決三個(gè)問題:
1 .兩個(gè)http服務(wù)器除了有自己的rip以外還要擁有vip
因?yàn)椋簲?shù)據(jù)包需從realServer返回 ,realServer返回的數(shù)據(jù)需要源IP為VIP
解決:添加 lo接口(本地環(huán)路接口) ,lo:1 vip/32.
2 .當(dāng)GW向下廣播vip的時(shí)候 要分發(fā)器的vip響應(yīng) 而兩個(gè)http的vip不要響應(yīng)
因?yàn)椋簉ealServer的vip有了卓起,接著就是同一個(gè)網(wǎng)段中擁有兩個(gè)vip, 客戶端在網(wǎng)關(guān)發(fā)送arp廣播需找vip時(shí)需要讓realServer不接受響應(yīng).
解決:
echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
arp_ignore 設(shè)置為1和敬,意味著當(dāng)別人的arp請求過來的時(shí)候,如果接收的設(shè)備沒有這個(gè)ip戏阅,就不做出響應(yīng)(這個(gè)ip在lo上昼弟,lo不是接收設(shè)備的進(jìn)口)
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
使用最好的ip來回應(yīng),什么是最好的ip饲握?同一個(gè)網(wǎng)段內(nèi)子網(wǎng)掩碼最長的
3 .當(dāng)分發(fā)器向下找兩個(gè)http服務(wù)器時(shí),必須從dip發(fā)包
因?yàn)椋篋irector 發(fā)送數(shù)據(jù)包給realServer , 要走dip的網(wǎng)卡私杜,否則ip流向就是vip-->vip 發(fā)送不成功.
解決:調(diào)整vip和dip網(wǎng)卡在路由表中的順序,dip在上救欧,vip在下即可解決衰粹。
假如:192.168.1.1 是vip ,網(wǎng)卡eth0
192.168.1.2 是dip,網(wǎng)卡eth1
在添加這兩個(gè)ip的時(shí)候,路由表會出現(xiàn)如下條目:
192.168.1.0 0.0.0.0 255.255.255.0 u 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 u 0 0 0 eth1
這樣的路由順序會由eth0也就是vip發(fā)包笆怠,是不行的
解決:直接刪除eth0所在的網(wǎng)絡(luò)
ip route del 192.168.1.0/24 dev eth0
==========================================
注:LO接口本身的作用:
假如包是由一個(gè)本地進(jìn)程為另一個(gè)本地進(jìn)程產(chǎn)生的, 它們將通過外出鏈的'lo'接口,然后返回進(jìn)入鏈的'lo'接口.
===========清零連接數(shù)==============
[root@192.168.44.46 ~] elinks --dump http:// 192.168.44.66/index.html
[root@nginx1 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.44.66:80 34 948 0 260065 0
-> 192.168.44.50:80 17 568 0 166188 0
-> 192.168.44.51:80 17 380 0 93877 0
[root@nginx1 ~]# ipvsadm -Z
[root@nginx1 ~]# ipvsadm -L -n --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.44.66:80 0 0 0 0 0
-> 192.168.44.50:80 0 0 0 0 0
-> 192.168.44.51:80 0 0 0 0 0
=========================keepalived+lvs==============================
keepalived是什么
keepalived是集群管理中保證集群高可用的一個(gè)服務(wù)軟件铝耻,其功能類似于heartbeat,
用來防止單點(diǎn)故障蹬刷。
keepalived工作原理
keepalived是以VRRP協(xié)議為實(shí)現(xiàn)基礎(chǔ)的瓢捉,VRRP全稱Virtual Router Redundancy Protocol,
即虛擬路由冗余協(xié)議办成。
虛擬路由冗余協(xié)議泡态,可以認(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議,即將N臺提供相同功能的路由
器組成一個(gè)路由器組迂卢,這個(gè)組里面有一個(gè)master和多個(gè)backup某弦,master上面有一個(gè)對外提供
服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由為該vip)桐汤,master會發(fā)組播,當(dāng)
backup收不到vrrp包時(shí)就認(rèn)為master宕掉了靶壮,這時(shí)就需要根據(jù)VRRP的優(yōu)先級來選舉一個(gè)
backup當(dāng)master怔毛。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個(gè)模塊腾降,分別是core拣度、check和vrrp。core模塊為keepalived的核心螃壤,
負(fù)責(zé)主進(jìn)程的啟動抗果、維護(hù)以及全局配置文件的加載和解析。check負(fù)責(zé)健康檢查映穗,包括常
見的各種檢查方式窖张。vrrp模塊是來實(shí)現(xiàn)VRRP協(xié)議的。
VRRP協(xié)議(了解一下)
===================在兩臺負(fù)載均衡器上52|53==============================
環(huán)境:先在兩臺負(fù)載均衡器上(52|53上)各添加一塊網(wǎng)卡ens37 不用給它們配置靜態(tài)IP
1.在兩個(gè)web安裝web服務(wù)
yum -y install nginx -y
====修改主機(jī)內(nèi)容
vim /usr/share/nginx/html/index.html
web1
vim /usr/share/nginx/html/index.html
web2
啟動服務(wù)
systemctl start nginx
2.====給兩臺web服務(wù)器的lo網(wǎng)卡設(shè)置子網(wǎng)掩碼為32為的vip
ifconfig lo:0 192.168.44.66/32 或者永久
[root@web1 network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.44.66
NETMASK=255.255.255.255
BROADCAST=192.168.44.66
ONBOOT=yes
NAME=loopback
3.====子網(wǎng)掩碼最好 的32位發(fā)送過去 設(shè)置內(nèi)核參數(shù)
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
4.讓兩臺web服務(wù)器不收到廣播 忽悠arp響應(yīng)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
5.注意:誰的路由條目在上就是dip 另一個(gè)就是vip(route -n)
5.2 yum -y install ipvsadm(兩臺負(fù)載均衡上裝ipvsadm 52|53)
ipvsadm -C 清除內(nèi)核虛擬服務(wù)器表中的所有記錄蚁滋。
ipvsadm -L 顯示內(nèi)核虛擬服務(wù)器表
重點(diǎn):vip是飄的 服務(wù)器里的記錄交給下面的keepalived自動配置宿接,也不用配置ens37那個(gè)文件
6.[root@]# yum install -y keepalived (兩臺負(fù)載均衡器上裝kepalived)
[root@]# cd /etc/keepalived/
[root@]# vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id Director1
}
vrrp_instance VI_1 {
state MASTER 另一臺填state BACKUP
interface ens33 //隨便本機(jī)網(wǎng)卡
virtual_router_id 51
priority 150 //另一臺填 priority 100
advert_int 1 //檢查間隔,單位秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.44.66/32 dev ens37
}
}
virtual_server 192.168.44.66 80 { //LVS 配置
delay_loop 3 //服務(wù)論詢的時(shí)間間隔
lb_algo rr //LVS 調(diào)度算法
lb_kind DR // LVS 集群模式
protocol TCP
real_server 192.168.44.50 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.44.51 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}
7.[root@ 192.168.44.52]# scp keepalived.conf 192.168.44.53:/etc/keepalived/
拷貝后,修改配置文件
state BACKUP
priority 100
8.兩個(gè)Director上啟動服務(wù):
rhel6:
# service keepalived start
rhel7:
# systemctl start keepalived
9.測試:
1)觀察lvs路由條目 ipvsadm -L
2)觀察vip地址在哪臺機(jī)器上
3)客戶端瀏覽器訪問vip
4)關(guān)閉master上的keepalived服務(wù)辕录,再次訪問vip