天天看點

項目實戰02:LVS 實作負載均衡

目錄

  • 實作基于LVS負載均衡叢集的電商網站架構
  • 實戰一:LVS的NAT模式實作負載均衡
  • 實戰二:LVS的DR 模式實作負載均衡
  • 實戰三:實作80、443端口都可通路服務,且LVS實作持久連接配接
  • 實驗四:實作ssl 加密

負載均衡叢集企業級應用實戰-LVS

項目實戰02:LVS 實作負載均衡

  背景:随着業務的發展,網站的通路量越來越大,網站通路量已經從原來的1000QPS,變為3000QPS,網站已經不堪重負,響應緩慢,面對此場景,單純靠單台LNMP的架構已經無法承載更多的使用者通路,此時需要用負載均衡技術,對網站容量進行擴充,來解決承載的問題。scale out? scale up?  

總項目流程圖,詳見http://www.cnblogs.com/along21/p/7435612.html

回到頂部

項目實戰02:LVS 實作負載均衡

前景:随着業務的發展,網站的通路量越來越大,網站通路量已經從原來的1000QPS,變為3000QPS,網站已經不堪重負,響應緩慢,面對此場景,單純靠單台LNMP的架構已經無法承載更多的使用者通路,此時需要用負載均衡技術,對網站容量進行擴充,來解決承載的問題。scale out? scale up?

實驗前準備:

1、ipvsadm

yum install ipvsadm -y #在LVS-server安裝lvs管理軟體

程式包:ipvsadm(LVS管理工具)

Unit File: ipvsadm.service

主程式:/usr/sbin/ipvsadm

規則儲存工具:/usr/sbin/ipvsadm-save

規則重載工具:/usr/sbin/ipvsadm-restore

配置檔案:/etc/sysconfig/ipvsadm-config

2、grep -i -C 10 "ipvs" /boot/config-VERSION-RELEASE.x86_64 檢視核心是否支援IPVS

3、iptables -F && setenforing 清空防火牆政策,關閉selinux

實戰架構圖:

項目實戰02:LVS 實作負載均衡

1、環境準備:

機器名稱 IP配置 服務角色 備注
lvs-server

VIP:172.17.1.6

DIP:192.168.30.106

負載均衡器

開啟路由功能

(VIP橋接、DIP僅主機)

rs01 RIP:192.168.30.107 後端伺服器 網關指向DIP(僅主機)
rs02 RIP:192.168.30.7

注意:確定rs 在一個網段,且隻有一個網段

2、在directory 負載均衡器上

yum -y install ipvsadm

① 開啟一個基于80端口的虛拟服務vip,排程方式為wrr

ipvsadm -A -t 172.17.1.6:80 -s wrr

② 配置web服務後端real server  為nat工作方式  權重為1

ipvsadm -a -t 172.17.1.6:80 -r 192.168.30.107:80 -m -w 1

ipvsadm -a -t 172.17.1.6:80 -r 192.168.30.7:80 -m -w 1

③ 修改核心配置,開啟路由轉發

vim /etc/sysctl.conf 該一行

net.ipv4.ip_forward = 1

sysctl -p 讀一些,使其生效

3、在兩台real server 上設定

① 開啟實作準備好的web網頁服務

systemctl start nginx

systemctl start php-mysql

systemctl start mariadb

② 把網關指向directory

route add default gw 192.168.30.106

4、自己的windows 做用戶端,通過vip 172.17.1.6通路web服務,排程成功

項目實戰02:LVS 實作負載均衡

項目實戰02:LVS 實作負載均衡

1、環境準備

VIP:172.17.100.100
RIP:172.17.1.7
RIP:172.17.22.22

注意:lvs-server 和rs 要在一個網段,rs隻有一個網段

2、在lvs-server 上設定

① 配置VIP到本地網卡别名,廣播隻自己響應

ifconfig eth0:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

route add -host 172.17.100.100 dev eth0:0 給網卡别名指向網關

② ipvsadm 政策配置

開啟一個基于80端口的虛拟服務,排程方式為wrr

ipvsadm -A -t 172.17.100.100:80 -s wrr

配置web服務後端real server  為DR工作方式  權重為1

ipvsadm -a -t 172.17.100.100:80 -r 172.17.22.22:80 -g -w 1

ipvsadm -a -t 172.17.100.100:80 -r 172.17.1.6:80 -g -w 1

3、real server 上配置

① 配置VIP到本地回環網卡lo上,并隻廣播自己

ifconfig lo:0 172.17.100.100 broadcast 172.17.100.100 netmask 255.255.255.255 up

配置本地回環網卡路由

route add -host 172.17.100.100 lo:0

② 使RS "閉嘴"

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

忽略ARP廣播

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:關閉arp應答

1:僅在請求的目标IP配置在本地主機的接收到請求封包的接口上時,才給予響應

2:必須避免将接口資訊向非本網絡進行通告

③ 想永久生效,可以寫到配置檔案中

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

sysctl -p 讀一下,使其生效

4、開啟實作準備好的web網頁服務

5、效果驗證

① 可分别在rs1和rs2建立2個不同内容,統一路徑的test.html測試檔案,測試負載均衡功能

在RS01 上vim ../test.html

real server 1

② 打開http://172.17.1.6/ ,并在director上用ipvsadm -L -n觀察通路連接配接

項目實戰02:LVS 實作負載均衡

③ 用另外一台測試機,用ab壓力測試工具,測試經過負載均衡後的伺服器容量

2、在vs 上設定:

① 在iptables 打上标記,把80端口标記為99

iptables -t mangle -A PREROUTING -d 172.17.100.100 -p tcp --dport 80 -j MARK --set-mark 99

在iptables打上标記,把443端口标記為99

iptables -t mangle -A PREROUTING -d 172.17.100.100-p tcp --dport 443 -j MARK --set-mark 99

② 在lvs上建立基于99号标記的虛拟服務

ipvsadm -A -f 99 -s rr -p

設定後端服務位址,用DR模式

ipvsadm -a -f 99 -r 172.17.1.7 -g

ipvsadm -a -f 99 -r 172.17.22.22 -g

解析:-p 就是持久連接配接

3、在rs 準備好了的web服務,開啟80、443端口

關于ssl 443加密的代碼,具體實作下實驗四

項目實戰02:LVS 實作負載均衡

4、測試,自己windows 做用戶端,通路 http://172.17.1.6/

項目實戰02:LVS 實作負載均衡

通路 http://172.17.1.6/

項目實戰02:LVS 實作負載均衡

(1)一個實體伺服器設定一個https

1、建立存放證書的目錄

mkdir /etc/nginx/ssl

2、自簽名證書

cd /etc/pki/tls/certs/

make nginx.crt

項目實戰02:LVS 實作負載均衡

openssl rsa -in nginx.key -out nginx2.key 因為剛私鑰被加密了,為了後邊友善,解密

3、把證書和私鑰cp 到nginx存放證書目錄

cp nginx.crt nginx2.key /etc/nginx/ssl/

cd /etc/nginx/ssl/

mv nginx2.key nginx.key 把名字改回來

4、修改配置檔案,加一段server

server {

listen 443 ssl;

server_name www.along.com;

ssl on;

ssl_certificate /etc/nginx/ssl/nginx.crt;

ssl_certificate_key /etc/nginx/ssl/nginx.key;

ssl_session_cache shared:sslcache:20m;

ssl_session_timeout 10m;

}

項目實戰02:LVS 實作負載均衡

5、測試,網頁打開 https://192.168.30.7/

項目實戰02:LVS 實作負載均衡

windows 信任證書

項目實戰02:LVS 實作負載均衡

(2)因為nginx 強大,可以實作多個虛拟主機基于不同的FQDN 實作ssl加密,httpd不能實作

一個實體伺服器設定多個https

1、生成3個證書和私鑰

make nginx2.crt

make nginx3.crt

項目實戰02:LVS 實作負載均衡

2、把證書和私鑰cp 到nginx存放證書目錄,并解開私鑰的加密

cp nginx{1,2,3}* /etc/nginx/ssl/

openssl rsa -in nginx.key -out nginx.key

openssl rsa -in nginx2.key -out nginx2.key

openssl rsa -in nginx3.key -out nginx3.key

3、建立各自對應的通路網頁

mkdir /app/website{1,2,3}

echo website1 > /app/website1/index.html

echo website1 > /app/website2/index.html

echo website1 > /app/website3/index.html

項目實戰02:LVS 實作負載均衡

4、測試通路,成功