LVS
Linux Virtual Server: Linux虛拟伺服器
基于四層的LB
================================
LVS+keepalived Web Server 80/tcp
LVS+keepalived Galera MySQL/MySQL Cluster 3306/tcp
一、LVS概述
LVS是Linux核心的一部分,是以性能較高
Linux虛拟伺服器(即分發器或排程器)功能:
不真正提供服務,介接受客戶的通路,為整個叢集提供一個唯一的入口
虛拟伺服器和真實伺服器(Real Server)通信
真正提供服務,叢集中每個(Real Server)可以是實體機,也可以是虛拟機
二、LVS三種基本模式
VS/NAT
VS/TUN
VS/DR
Server
any
Tunneling
Non-arp device
Server network
private
LAN/WAN
LAN
Server number
low(10-20)
High(100)
Server gateway
load balancer
own router
Own router
注:Server為Real Server
VS/NAT:
IIS,Apache,Nginx
私有網絡
low
10~20
gateway
所有Real Server網關必須指向排程器
VS/NAT:網絡位址轉換模式,進站/出站的資料流量經過分發器。
VS/DR:直接路由模式,隻有進站的資料流量經過分發器
調試器和真實伺服器必須在同一網段
VS/TUN:隧道模式,隻有進站的資料流量經過分發器。
VS/NAT配置
實驗說明:
1、 KVM網絡使用NAT模式
2、 client、調試器、Real Server都使用虛拟機或使用真實伺服器
3、 虛拟機上的網卡使用半虛拟化驅動,如果半虛拟化驅動異常,可以使用default/rtl8139
網絡拓撲:
主機功能
IP位址
必備軟體
client
CIP:192.168.122.0/24
curl、elinks或firefox
Director
eth0:VIP:192.168.122.100
eth1:DIP:10.10.10.1
Real Server
RIP:10.10.10.10 10.10.10.20 10.10.10.30
安裝httpd服務
DNS Server
www.ak.com=====>192.168.122.100
bind或bind-chroot
建議:先在Real Server安裝如httpd
VS/NAT實施
1、 準備工作(叢集中所有主機)[可選]
IP、hostname、hosts、iptables、SELinux、ssh trust、ntp
cat /etc/hosts
0.0.1 localhost
10.10.1 director1.sky.com director1
10.10.10 node1.sky.com node1
10.10.20 node2.sky.com node2
10.10.30 node3.sky.com node3
2、 RS配置
說明:RS是指Real Server,即後端的真實伺服器。
在node1、node2、node3上部署
node1部署httpd服務
yum install -y httpd
echo ServerName node1.sky.com:80 > /etc/httpd/conf.d/sv.conf
echo node1 web > /var/www/html
service httpd restart
chkconfig httpd on
cd /etc/sysconfig/network-scripts
cp -v ifcfg-eth0{,.bak}
cat > ifcfg-eth0 <<EOF
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.10
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
DNS=192.168.122.100
EOF
service network restart
ip addr show
curl 127.0.0.1
node2部署httpd服務
echo ServerName node2.sky.com:80 > /etc/httpd/conf.d/sv.conf
echo node2 web > /var/www/html
IPADDR=10.10.10.20
node3部署httpd服務
echo ServerName node3.sky.com:80 > /etc/httpd/conf.d/sv.conf
echo node3 web > /var/www/html
IPADDR=10.10.10.30
配置好網站伺服器,測試所有RS //為了看到效果,建議提供不同的頁面
預設網關均指向Directory的DIP
3、 Director分發器配置
配置VIP
ip addr add dev eth0 192.168.122.100/24
vim /etc/sysctl.conf 修改内容如下
net_ipv4.ip_forward=1
:wq儲存退出
sysctl -p //確定打開路由轉發
定義LVS的分發政策
yum install -y ipvsadm
ipvsadm --help
man ipvsadm 然後查找EXAMPLE執行個體
ipvsadm -A -t 192.168.122.100:80 -s rr
ipvsadm -a -t 192.168.122.100:80 -r 10.10.10.10 -m
ipvsadm -a -t 192.168.122.100:80 -r 10.10.10.20 -m
ipvsadm -a -t 192.168.122.100:80 -r 10.10.10.30 -m
確定RHEL倉庫可用
-m是批massquerading(NAT)
技巧:
Director排程器排程多個網站服務時,隻需要給排程器的WAN網卡設定多個外網IP,然後做第2個排程政策。
檢視LVS狀态資訊
ipvsadm -L
ipvsadm -Ln
狀态資訊如下:
檢視其他資訊
ipvsadm -L -n --stats
ipvsadm -L -n --rate
ipvsadm -Ln -c
watch -n.5 'ipvsadm -Ln -c'
看速率
看LVS的連接配接條目
4、 測試
5、 小結
VS/NAT模式的原理:當Director收到Client請求時,Director将資料包的目标IP由VIP轉換為選中的Real Server的RIP來實作分發。
要求:RS将網關指向Director的DIP。
特點:配置簡單,所有的入站、出站資料包都經過分發器。當資料量比較大時,分發器可能會出現網絡瓶頸!因而支援的RS數量少。
重點注意:
Director必須開啟Kernel ip_forward
所有Real Server預設網關指向DIP
Director使用DIP和Real Server的RIP通信
監測:
watch -n.5 'ipvsadm -Ln -c'
新指令了解:
arping -I eth0 172.20.20.250
ip addr add dev br1 172.16.20.250/24
ip addr add dev lo 172.16.20.250/32
arp -n | grep 192.168.100.2
VS/DR模式原了解析
RIP:設定在實體網卡
VIP:設定在lo環回網卡(127.0.0.1)上
Non-arp工作原理:
VS-DR部署實戰
2、 DR模式要求Director的DIP和所有Real Server的RIP必須在同一個網段及廣播域
3、 所有節點網關均指定真實網關
4、 用腳本部署LVS叢集
注意:排程器和RealServer必須在同一個LAN,LAN可以使用公網IP,也可以使用private IP
公網IP:前端路由器工作模式為路由模式
私網IP:前端路由器工作為NAT,并将某個公網IP映射到VIP(private)
Client
CIP:192.168.122.1
VIP:192.168.122.100
DIP:192.168.122.2
Real Server
RIP:192.168.122.10
RIP:192.168.122.20
RIP:192.168.122.30
Nor-arp
DNS Server
LVS/DR實戰
1、準備工作(叢集中所有主機)
168.122.2 director1.sky.com director1
168.122.10 node1.sky.com node1
168.122.20 node2.sky.com node2
168.122.30 node3.sky.com node3
6、 RS配置
在node1、node2、node3上部署好網站伺服器,測試所有RS。為了測試效果,提供不同的網站頁面。
在三台RS上的lo環回接口上添加VIP,并開啟Non-arp功能
ip addr dee lo 192.168.122.100/32 #在lo接口上綁定VIP
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #non-arp
echo 2> /proc/sys/net/ipv4/conf/all/arp_announce #non-arp
預設網關均指向Director的DIP
7、 Director分發器配置
ip addr add dev eth0 192.168.122.100/32 ##配置VIP
yum install -y ipvsadm ##確定yum倉庫可用
定義LVS分發政策
ipvsadm -C
ipvsadm -A -t 192.168.122.100:80 -s rr
ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.10 -g
ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.20 -g
ipvsadm -a -t 192.168.122.100:80 -r 192.168.122.30 -g
service ipvsadm save
ipvsadm -Ln
8、 測試
9、 小結
VS/NAT模式的原理:當一個Client發送一個請求到VIP,Director根據VIP選擇對應的RealServer的Pool,根據算法,在Pool中選擇一台RealServer,然後将Client的請求包發給選擇的RealServer,最後,選擇的RealServer把應答包直接傳給Client。
LVS叢集部署的腳本
vi lvs_httpd.sh
#!/bin/bash
#LVS_DR_RealServer的httpd初始化腳本,并發處理。
IFS=$'\n'
alias sed='sed -c --follow-syslinks'
ntpserver=172.16.8.100
vip=192.168.122.100
for line in $(cat real_serverip.txt)
#real_serverip.txt
#old_ip hostname newip
#192.168.122.10 web10 192.168.122.10
#192.168.122.11 web11 192.168.122.20
#192.168.122.12 web12 192.168.122.30
#...
do
{
ip=$(echo $line | awk '{print $1}')
hostname=$(echo $line | awk '{print $2}')
newip=$(echo $line | awk '{print $3}')
ssh root@$ip 'chkconfig NetworkManager off'
ssh root@$ip 'iptables -F ; service iptables save'
ssh root@$ip "sed -r -i "/^SELINUX/cSELINUX=permissive" /etc/selinux/config"
ssh root@$ip "sed -r -i "/^HOSTNAME/cHOSTNAME=$hostname" /etc/sysconfig/network"
ssh root@$ip "sed -r -i "/^BOOTPROTO/cBOOTPROTO=none" /etc/sysconfig/network-scripts/ifcfg-eth0"
ssh root@$ip "sed -r -i "/IPADDR/cIPADDR=$newip" /etc/sysconfig/network-scripts/ifcfg-eth0"
ssh root@$ip "sed -r -i "3aPREFIX=24" /etc/sysconfig/network-scripts/ifcfg-eth0"
ssh root@$ip "sed -r -i "3aGATEWAY=$gw" /etc/sysconfig/network-scripts/ifcfg-eth0"
ssh root@$ip "wget ftp://172.16.8.100/rhel6.repo -O /etc/yum.repos.d/rhel6.repo"
ssh root@$ip "yum install -y lftp tree httpd"
ssh root@$ip "chkconfig httpd on"
ssh root@$ip "echo "ServerName $hostname" > /etc/httpd/conf.d/sv.conf"
ssh root@$ip "service httpd restart"
ssh root@$ip "echo $hostname > /var/www/html/index.html"
}&
done
LVS排程算法詳解
LVS持久性連接配接
LVS端口親緣性
基本LVS LB叢集解決方案一 LVS KeepAlived
基本LVS LB叢集解決方案二 LVS Piranha
本文轉自rshare 51CTO部落格,原文連結:http://blog.51cto.com/1364952/1955320,如需轉載請自行聯系原作者