Linux初学者学习笔记LBLVS集群

20171020 LVS

2017-10-30  本文已影响26人  哈喽别样
  • 集群的概念
  • LVS介绍
  • ipvsadm的使用
  • 实现LVS-NAT
  • 实现LVS-DR
  • LVS高可用

一、集群的概念

(一)系统扩展方式

(二)集群的概念和分类

(1)Linux Cluster类型
(2)Cluster按照实现分类
(3)Cluster基于工作协议层次分类

(三)负载均衡下实现会话保持

二、LVS介绍

(一)LVS

(二)LVS-NAT模式

(1)实现原理:

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为VS调度的RS的RIP和PORT实现转发

(2)特点:

(三)LVS-DR(Direct Routing)模式

(1)实现原理:

通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是VS调度的RS的RIP所在接口的MAC地址

(2)特点:
(3)通过RS目标MAC实现调度的条件:防止IP地址冲突

有以下三种方法

(四)LVS-TUN模式

(1)实现原理:

不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)

(2)特点:

(五)LVS-FULLNAT模式

(1)实现原理:

通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP --> DIP
VIP --> RIP

(2)特点:

(六)LVS四种模式异同

(七)ipvs scheduler:调度算法

(1)静态方法:仅根据算法本身进行调度
(2)动态方法:主要根据每RS当前的负载状态及调度算法进行调度

三、ipvsadm的使用

(一)管理集群服务

(二)管理集群上的RS

(三)FWM(FireWall Mark)

(四)持久连接

(五)其他ipvsadm命令

(六)保存及重载规则

四、实现LVS-NAT

(一)设计要点:

(二)实现功能:

NAT模型实现https负载均衡集群

(三)实验环境:

(四)实验步骤:

(1)实验准备
// CentOS 6关闭iptables
service iptables stop
chkconfig iptables off
// CentOS 7关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
// 关闭selinux
vim /etc/sysconfig/selinux
SELINUX=permissive
setenforce 0
(2)准备RS1, RS2的httpd服务
vim /var/www/html/index.html
RS1 homepage     // RS1上的内容
RS2 homepage     // RS2上的内容
service httpd start
// 测试httpd服务
curl 192.168.136.229
curl 192.168.136.129
(3)配置路由
// RS1/2配置默认网关
route add default gw 192.168.136.230
// Client配置默认网关
route add default gw 172.18.58.230
// VS开启路由功能
vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
sysctl -p
(4)Director上配置LVS-NAT
ipvsadm -A -t 172.18.58.230:80 -s wrr
ipvsadm -a -t 172.18.58.230:80 -r 192.168.136.229:80 -m -w 2
ipvsadm -a -t 172.18.58.229:80 -r 192.168.136.129:80 -m
ipvsadm -Ln
(5)测试http服务的lvs-nat模式

for i in {1..10}; do curl 172.18.58.230 ; done

从测试结果中看出,director明显按照wrr算法,以RS1:RS2=2:1的比例调度

(6)实现httpd加密服务的lvs-nat模式
cd /etc/pki/tls/certs
make httpd.crt
// 建立密钥时需要输入密码,需要对密钥解密
openssl rsa -in /etc/pki/tls/certs/httpd.key -out /etc/pki/tls/certs/httpd2.key
mv httpd2.key httpd.crt /etc/httpd/conf.d/
cd /etc/httpd/conf.d
mv httpd2.key httpd.key
cd /etc/httpd/conf.d
scp httpd* 192.168.136.129:/etc/httpd/conf.d/
yum install mod_ssl
vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/app/website"
SSLCertificateFile /etc/httpd/conf.d/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/httpd.key
mkdir -p /app/website
echo "RS1 encrypted homepage" > /app/website/index.html      // RS1上的内容
echo "RS2 encrypted homepage" > /app/website/index.html      // RS2上的内容
service httpd restart
curl -k https://192.168.136.229     // 在RS1本机测试https连接
curl -k https://192.168.136.129     // 在RS2本机测试https连接
ipvsadm -A -t 172.18.58.230:443 -s wrr
ipvsadm -a -t 172.18.58.230:443 -r 192.168.136.229:443 -m  -w 2
ipvsadm -a -t 172.18.58.230:443 -r 192.168.136.129:443 -m 

五、实现LVS-DR

(一)DR模型中,各主机上均需要配置VIP,解决地址冲突的方式有三种:

(二)实验功能:

DR模型实现https负载均衡集群

(三)实验环境:

(四)实验步骤:

(1)实验准备
// CentOS 6关闭iptables
service iptables stop
chkconfig iptables off
// CentOS 7关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
// 关闭selinux
vim /etc/sysconfig/selinux
SELINUX=permissive
setenforce 0
(2)准备RS1, RS2的httpd服务
vim /var/www/html/index.html
RS1 homepage LVS-DR     // RS1上的内容
RS2 homepage LVS-DR     // RS2上的内容
service httpd start
// 测试httpd服务
curl 192.168.136.229
curl 192.168.136.129
(3)配置路由
// RS1/2配置默认网关
route add default gw 192.168.136.130
// VS配置默认网关
route add default gw 192.168.136.130
// Client配置默认网关
route add default gw 172.18.58.130
// Router开启路由功能
vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
sysctl -p
(4)RS配置
// 限制arp响应和通告的级别
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
// 将VIP绑定到lo网卡上
ip a a 192.168.136.230 dev lo
(5)Director上配置LVS-DR
// 将DIP绑定到VIP所在的网卡
ip a a 192.168.136.30/24 dev ens37
// 配置LVS-DR
ipvsadm -A -t 192.168.136.230:80 -s wrr
ipvsadm -a -t 192.168.136.230:80 -r 192.168.136.229:80 -g -w 2
ipvsadm -a -t 192.168.136.230:80 -r 192.168.136.129:80 -g
ipvsadm -Ln
(6)测试http服务的lvs-nat模式

for i in {1..10}; do curl 192.168.136.230 ; done

从测试结果中看出,director明显按照wrr算法,以RS1:RS2=2:1的比例调度

(7)实现httpd加密服务的lvs-nat模式
cd /etc/pki/tls/certs
make httpd.crt
// 建立密钥时需要输入密码,需要对密钥解密
openssl rsa -in /etc/pki/tls/certs/httpd.key -out /etc/pki/tls/certs/httpd2.key
mv httpd2.key httpd.crt /etc/httpd/conf.d/
cd /etc/httpd/conf.d
mv httpd2.key httpd.key
cd /etc/httpd/conf.d
scp httpd* 192.168.136.129:/etc/httpd/conf.d/
yum install mod_ssl
vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/app/website"
SSLCertificateFile /etc/httpd/conf.d/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/httpd.key
mkdir -p /app/website
echo "RS1 encrypted homepage LVS-DR" > /app/website/index.html      // RS1上的内容
echo "RS2 encrypted homepage LVS-DR" > /app/website/index.html      // RS2上的内容
service httpd restart
curl -k https://192.168.136.229     // 在RS1本机测试https连接
curl -k https://192.168.136.129     // 在RS2本机测试https连接
ipvsadm -A -t 192.168.136.230:443 -s wrr
ipvsadm -a -t 192.168.136.230:443 -r 192.168.136.229:443 -w 2
ipvsadm -a -t 192.168.136.230:443 -r 192.168.136.129:443

(五)实验进阶1:使用FWM将http和https服务统一调度

ipvsadm -C
ipvsadm -A -f 10 -s wrr
ipvsadm -a -f 10 -r 192.168.136.229 -g -w 2
ipvsadm -a -f 10 -r 192.168.136.129 -g

(六)实验进阶2:实现所有调度算法都可以会话绑定,绑定时间120s

ipvsadm -C
ipvsadm -A -f 10 -s wrr -p 120
ipvsadm -a -f 10 -r 192.168.136.229 -g -w 2
ipvsadm -a -f 10 -r 192.168.136.129 -g

六、LVS高可用

(1)Director不可用,整个系统将不可用,SPoF(Single Point of Failure)

(2)某RS不可用时,Director依然会调度请求至此RS

(3)通过ldirectord管理LVS,实现当某RS不可用时LVS自动切换至其他RS

cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/
vim /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
quiescent=no
virtual=192.168.136.230:80
        real=192.168.136.229:80 gate 2
        real=192.168.136.129:80 gate 1
        fallback=127.0.0.1:80 gate     // sorry server
        service=http
        scheduler=wrr
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        receive="homepage"

ipvsadm -C      // ldirectord服务启动后接管ipvsadm对LVS的管理,提前清空设置
systemctl start ldirectord
yum intall httpd
vim /var/www/html/index.html
Sorry, wait a moment.
systemctl httpd start
上一篇下一篇

猜你喜欢

热点阅读