最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

集群LVS代理服務器

2023-02-15 09:19 作者:bili_39183997178  | 我要投稿

集群

????????????? 將很多機器組織到一起,作為一個整體對外提供服務

????????????? 集群在擴展性、性能方面都可以做到很靈活

????????????? 集群分類:

–??????????? 負載均衡集群:Load Balance

–??????????? 高用可用集群:High Availability

–??????????? 高性能計算:High Performance Computing

LVS

????????????? LVS:Linux Virtual Server,Linux虛擬服務器

????????????? 實現(xiàn)負載均衡集群

????????????? 作者:章文嵩。國防科技大學讀博士期間編寫

????????????? LVS的工作模式:

–??????????? NAT:網(wǎng)絡地址轉(zhuǎn)換

–??????????? DR:路由模式

–??????????? TUN:隧道模式

????????????? 術語:

–??????????? 調(diào)度器:LVS服務器

–??????????? 真實服務器Real Server:提供服務的服務器

–??????????? VIP:虛擬地址,提供給用戶訪問的地址

–??????????? DIP:指定地址,LVS服務器上與真實服務器通信的地址

–??????????? RIP:真實地址,真實服務器的地址

????????????? 常見的調(diào)度算法,共10個,常用的有4個:

–??????????? 輪詢rr:Real Server輪流提供服務

–??????????? 加權輪詢wrr:根據(jù)服務器性能設置權重,權重大的得到的請求更多

–??????????? 最少連接lc:根據(jù)Real Server的連接數(shù)分配請求

–??????????? 加權最少連接wlc:類似于wrr,根據(jù)權重分配請求

配置LVS NAT模式


?

????????????? 環(huán)境準備

–??????????? client1:eth0->192.168.4.10,網(wǎng)關192.168.4.5

–??????????? lvs1: eth0 -> 192.168.4.5;eth1->192.168.2.5

–??????????? web1:eth1->192.168.2.100;網(wǎng)關192.168.2.5

–??????????? web2:eth1->192.168.2.200;網(wǎng)關192.168.2.5

# 創(chuàng)建4臺虛擬機
[root@zzgrhel8 ~]# clone-vm7
Enter VM number: 1??? # 此處填的數(shù)字,是虛擬機編號
[root@zzgrhel8 ~]# clone-vm7
Enter VM number: 2
[root@zzgrhel8 ~]# clone-vm7
Enter VM number: 3
[root@zzgrhel8 ~]# clone-vm7
Enter VM number: 4

# 查看虛擬機
[root@zzgrhel8 ~]# virsh list --all
?Id?? 名稱????????? 狀態(tài)
--------------------------
?-??? tedu_node01?? 關閉
?-??? tedu_node02?? 關閉
?-??? tedu_node03?? 關閉
?-??? tedu_node04?? 關閉

# 啟動虛擬機
[root@zzgrhel8 ~]# for i in {1..4}
> do
> virsh start tedu_node0$i
> done

# 初始化虛擬機
[root@zzgrhel8 ~]# virsh console tedu_node01? # 連接tedu_node01控制臺
localhost login: root
Password: 123456
# 登陸之后,將以下內(nèi)容粘貼到終端
hostnamectl set-hostname client1
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.10/24
nmcli connection down eth0
nmcli connection up eth0
echo a | passwd --stdin root
nmcli connection modify eth0 ipv4.gateway 192.168.4.5
nmcli connection down eth0
nmcli connection up eth0

# 退出
[root@localhost ~]# exit
# 退出之后,按ctrl+]可回到真機

# 真機通過ssh連接client1
[root@zzgrhel8 ~]# rm -f ~/.ssh/known_hosts
[root@zzgrhel8 ~]# ssh 192.168.4.10


# 配置第2臺機器作為lvs1
[root@zzgrhel8 ~]# virsh console tedu_node02
Kernel 3.10.0-862.el7.x86_64 on an x86_64

localhost login: root
Password: 123456

# 登陸之后,將以下內(nèi)容復制到命令行
hostnamectl set-hostname lvs1
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.5/24
nmcli connection down eth0
nmcli connection up eth0
nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.2.5/24
nmcli connection down eth1
nmcli connection up eth1
echo a | passwd --stdin root

# 退出
[root@localhost ~]# exit
# 退出之后,按ctrl+]可回到真機

# 真機通過ssh連接lvs1
[root@zzgrhel8 ~]# ssh 192.168.4.5



# 配置第3臺機器作為web1
[root@zzgrhel8 ~]# virsh console tedu_node03
localhost login: root
Password: 123456

# 登陸之后,將以下內(nèi)容復制到命令行
hostnamectl set-hostname web1
nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.2.100/24
nmcli connection down eth1
nmcli connection up eth1
nmcli connection modify eth1 ipv4.gateway 192.168.2.5
nmcli connection down eth1
nmcli connection up eth1
echo a | passwd --stdin root

# 退出
[root@localhost ~]# exit
# 退出之后,按ctrl+]可回到真機

# 真機通過ssh連接web1
[root@zzgrhel8 ~]# ssh 192.168.2.100




# 配置第4臺機器作為web2
[root@zzgrhel8 ~]# virsh console tedu_node04
localhost login: root
Password: 123456

# 登陸之后,將以下內(nèi)容復制到命令行
hostnamectl set-hostname web2
nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.2.200/24
nmcli connection down eth1
nmcli connection up eth1
nmcli connection modify eth1 ipv4.gateway 192.168.2.5
nmcli connection down eth1
nmcli connection up eth1
echo a | passwd --stdin root

# 退出
[root@localhost ~]# exit
# 退出之后,按ctrl+]可回到真機

# 真機通過ssh連接web2
[root@zzgrhel8 ~]# ssh 192.168.2.200

????????????? 通過clone-vm7創(chuàng)建出來的虛擬機器,如果有192.168.4.0網(wǎng)段的地址,yum已經(jīng)配置了。虛擬機已關閉selinux和防火墻 。

配置LVS NAT模式步驟

????????????? 配置2臺web服務器

[root@web1 ~]# vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.2.254/centos-1804
enabled=1
gpgcheck=0
[root@web2 ~]# vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.2.254/centos-1804
enabled=1
gpgcheck=0
[root@web1 ~]# yum install -y httpd
[root@web2 ~]# yum install -y httpd

# 創(chuàng)建測試頁面
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html
[root@web2 ~]# echo "apache web server2" > /var/www/html/index.html
[root@web1 ~]# systemctl enable httpd --now
[root@web2 ~]# systemctl enable httpd --now

# 在lvs1上測試到web服務器的訪問
[root@lvs1 ~]# curl http://192.168.2.100/
192.168.2.100
[root@lvs1 ~]# ^100^200?? # 將上一條命令中的100換成200,執(zhí)行
curl http://192.168.2.200/
apache web server2

????????????? 確保lvs1的ip轉(zhuǎn)發(fā)功能已經(jīng)打開。該功能需要改變內(nèi)核參數(shù)

# 查看ip轉(zhuǎn)發(fā)功能的內(nèi)核參數(shù)
[root@lvs1 ~]# sysctl -a??? # 查看所有的內(nèi)核參數(shù)
[root@lvs1 ~]# sysctl -a | grep ip_forward? # 查看ip_foward參數(shù)
net.ipv4.ip_forward = 1?? # 1表示打開轉(zhuǎn)發(fā),0表示關閉轉(zhuǎn)發(fā)

# 永久設置打開ip_forward功能
[root@lvs1 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@lvs1 ~]# sysctl -p

# 測試從客戶端到服務器的訪問
[root@client1 ~]# curl http://192.168.2.100/
192.168.2.100
[root@client1 ~]# curl http://192.168.2.200/
apache web server2

????????????? 安裝LVS

[root@lvs1 ~]# yum install -y ipvsadm

????????????? ipvsadm使用說明

[root@lvs1 ~]# ipvsadm
-A: 添加虛擬服務器
-E: 編輯虛擬服務器
-D: 刪除虛擬服務器
-t: 添加tcp服務器
-u: 添加udp服務器
-s: 指定調(diào)度算法。如輪詢rr/加權輪詢wrr/最少連接lc/加權最少連接wlc

-a: 添加虛擬服務器后,向虛擬服務器中加入真實服務器
-r: 指定真實服務器
-w: 設置權重
-m: 指定工作模式為NAT
-g: 指定工作模式為DR

????????????? 配置LVS

# 為web服務器創(chuàng)建虛擬服務器,使用rr調(diào)度算法
[root@lvs1 ~]# ipvsadm -A -t 192.168.4.5:80 -s rr
# 查看配置
[root@lvs1 ~]# ipvsadm -Ln? # L是列出,n是使用數(shù)字,而不是名字

# 向虛擬服務器中添加RIP
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 2 -m
# 查看配置
[root@lvs1 ~]# ipvsadm -Ln

# 驗證
[root@client1 ~]# for i in {1..4}
> do
> curl http://192.168.4.5/
> done
apache web server2
192.168.2.100
apache web server2
192.168.2.100

# 刪除配置。(如果配置有錯,用以下命令刪除重配置)
[root@lvs1 ~]# ipvsadm -D -t 192.168.4.5:80


# 修改調(diào)度模式為加權輪詢
[root@lvs1 ~]# ipvsadm -E -t 192.168.4.5:80 -s wrr
# 驗證配置
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.5/; done
apache web server2
apache web server2
192.168.2.100
apache web server2
apache web server2
192.168.2.100

LVS DR模式


?

????????????? LVS DR模式,LVS主機和web服務器都是單網(wǎng)卡。它們連在同一網(wǎng)絡中

????????????? 修改實驗環(huán)境

–??????????? client1:eth0-> 192.168.4.10

–??????????? lvs1:eth0->192.168.4.5,刪除eth1的IP

–??????????? web1:eth0->192.168.4.100,刪除eth1的IP

–??????????? web2:eth0->192.168.4.200,刪除eth1的IP

# 刪除lvs虛擬服務器配置
[root@lvs1 ~]# ipvsadm -D -t 192.168.4.5:80
[root@lvs1 ~]# ipvsadm -Ln

# 刪除lvs1上eth1的配置
[root@lvs1 ~]# nmcli connection modify eth1 ipv4.method disabled ipv4.addresses ''
[root@lvs1 ~]# ifdown eth1


# 修改web1的配置:停掉eth1的地址。配置eth0的地址為192.168.4.100
# 進入網(wǎng)卡配置文件目錄
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
# eth0網(wǎng)卡的配置文件叫ifcfg-eth0
[root@web1 network-scripts]# ls ifcfg-eth*
ifcfg-eth0? ifcfg-eth1?? ifcfg-eth2? ifcfg-eth3
# 配置eth0地址
[root@web1 network-scripts]# vim ifcfg-eth0
TYPE=Ethernet???????????? # 網(wǎng)絡類型為以太網(wǎng)
BOOTPROTO=none??????????? # IP地址是靜態(tài)配置的,也可以用static
NAME=eth0???????????????? # 為設備重命名
DEVICE=eth0?????????????? # 網(wǎng)卡設備名
ONBOOT=yes??????????????? # 開機激活網(wǎng)卡
IPADDR=192.168.4.100????? # IP地址
NETMASK=255.255.255.0???? # 子網(wǎng)掩碼
GATEWAY=192.168.4.254???? # 網(wǎng)關
[root@web1 network-scripts]# ifdown eth0; ifup eth0? # 禁用激活網(wǎng)卡

# 在web1上停掉eth1
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=no
[root@web1 ~]# ifdown eth1


# 修改web2的網(wǎng)絡
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.4.200
NETMASK=255.255.255.0
GATEWAY=192.168.4.254
[root@web2 ~]# ifdown eth0; ifup eth0
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=no
[root@web2 ~]# ifdown eth1?? # 終端卡住,關掉它,在新終端重新連

配置LVS DR模式

1.????????? 在lvs1的eth0上配置vip 192.168.4.15。通過為eth0創(chuàng)建邏輯端口的方式配置vip,為邏輯端口起名為eth0:0

[root@lvs1 ~]# cd /etc/sysconfig/network-scripts/
[root@lvs1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@lvs1 network-scripts]# vim ifcfg-eth0:0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.4.15
PREFIX=24
[root@lvs1 network-scripts]# ifup eth0:0
# 查看新的地址
[root@lvs1 network-scripts]# ifconfig

1.????????? 在2臺web服務器的lo上配置vip 192.168.4.15

[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
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
[root@web1 network-scripts]# ifup lo:0
[root@web1 network-scripts]# ifconfig
# 把web1的配置拷貝到web2上
[root@web1 network-scripts]# scp ./ifcfg-lo:0 192.168.4.200:/etc/sysconfig/network-scripts/
[root@web2 ~]# ifup lo:0
[root@web2 ~]# ifconfig

1.????????? 在2臺web服務器上配置內(nèi)核參數(shù),使得它們不響應對192.168.4.15的請求

[root@web1 ~]# sysctl -a | grep arp_ignore
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 0
[root@web1 ~]# sysctl -a | grep arp_announce
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 0

[root@web1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
[root@web1 ~]# sysctl -p

[root@web2 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
[root@web2 ~]# sysctl -p

1.????????? 在lvs1上配置虛擬服務器

# 創(chuàng)建虛擬服務器
[root@lvs1 ~]# ipvsadm -A -t 192.168.4.15:80 -s wlc
# 向虛擬服務器中加真實服務器
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -w 1 -g
[root@lvs1 ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -w 2 -g
# 查看配置
[root@lvs1 ~]# ipvsadm -Ln

# 客戶驗證
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.15/; done
apache web server2
192.168.2.100
apache web server2
apache web server2
192.168.2.100
apache web server2

1.????????? lvs本身沒有應用服務器監(jiān)控功能,如果web服務器出現(xiàn)問題,需要手工從規(guī)則中刪掉

[root@web1 ~]# systemctl stop httpd
# 客戶端訪問時,轉(zhuǎn)發(fā)到web1上的請求,將會拒絕連接
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.15/; done
apache web server2
curl: (7) Failed connect to 192.168.4.15:80; 拒絕連接
apache web server2
apache web server2
curl: (7) Failed connect to 192.168.4.15:80; 拒絕連接
apache web server2
# 的規(guī)則中刪除web1
[root@lvs1 ~]# ipvsadm -d -t 192.168.4.15:80 -r 192.168.4.100
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.15/; done
apache web server2
apache web server2
apache web server2
apache web server2
apache web server2
apache web server2

附:出錯時,排錯步驟:

# 在lvs上可以訪問到web服務器
[root@lvs1 ~]# curl http://192.168.4.100/
192.168.2.100
[root@lvs1 ~]# curl http://192.168.4.200/
apache web server2

# 查看vip
[root@lvs1 ~]# ifconfig eth0:0
eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1500
??????? inet 192.168.4.15? netmask 255.255.255.0? broadcast 192.168.4.255
??????? ether 52:54:00:0d:fb:79? txqueuelen 1000? (Ethernet)

[root@web1 ~]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>? mtu 65536
??????? inet 192.168.4.15? netmask 255.255.255.255
??????? loop? txqueuelen 1000? (Local Loopback)

# 查看內(nèi)核參數(shù)
[root@web1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

# 查看規(guī)則
[root@lvs1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
? -> RemoteAddress:Port?????????? Forward Weight ActiveConn InActConn
TCP? 192.168.4.15:80 wlc
? -> 192.168.4.100:80???????????? Route?? 1????? 0????????? 0????????
? -> 192.168.4.200:80???????????? Route?? 2????? 0????????? 0?


集群LVS代理服務器的評論 (共 條)

分享到微博請遵守國家法律
富阳市| 道孚县| 镇原县| 调兵山市| 民和| 乐亭县| 南岸区| 漳州市| 上犹县| 新邵县| 横峰县| 铅山县| 哈巴河县| 郸城县| 南皮县| 嘉禾县| 鹿邑县| 准格尔旗| 宜宾县| 龙井市| 晋宁县| 进贤县| 互助| 凭祥市| 忻城县| 若羌县| 汶川县| 彰化县| 灌阳县| 杭锦旗| 大悟县| 孟津县| 南华县| 尼勒克县| 广德县| 孟州市| 韶山市| 轮台县| 柳州市| 峡江县| 永清县|