一、LVS-NAT模式集群构建
1、实验架构图
![](https://i-blog.csdnimg.cn/blog_migrate/8cb2f9d7f8c88fdd319ed9ddf4c26876.png)
2、构建流程:
### --- 负载调度器
vi /etc/sysctl.conf // 开启路由转发功能
net.ipv4.ip_forward=1
sysctl -p
### --- 添加防火墙记录,当源地址是内网网段并且出口网卡为eth0 的时候进行SNAT转换,转换源地址为外网卡地址
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT -j SNAT --to-source 20.20.20.11
iptables -t nat -L // 查看记录是否保存成功
ipvsadm -A -t 20.20.20.11:80 -s rr // 添加ipvsadm TCP集群
ipvsadm -a 20.20.20.11:80 -r 10.10.10.12:80 -m // 添加ipvsadm节点
ipvsadm -Ln
service ipvsadm save // 保存ipvs集群设置到文件进行持久化
chkconfig ipvsadm on
### --- 真实服务器
route add default gw IP地址 // 指定网关至负载调度器
service httpd start // 开启Apache服务器
chkconfig httpd on
二、LVS-DR模式集群构建
1、实验架构图:
![](https://i-blog.csdnimg.cn/blog_migrate/3b8460507177aad3d62389a49e31bbc3.png)
2、构建流程
### --- 负载调度器
### --- 关闭网卡守护进程
service NetworkManager stop
cd /etc/sysconfig/network-scrpits/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=虚拟IP
NETMASK=255.255.255.0
ifup eth0:0
### --- 关闭网卡重定向功能
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.eth0.send_redirects=0
sysctl -p
### --- 重载IPVS模块
modprobe ip_vs
rpm -ivh ipvsadm-1.261...... // 安装ipvsadm命令行工具
### --- 查看当前IPVS集群内容
ipvsadm -v // 查看当前IPVS集群内容
ipvsadm -A -t // 虚拟IP:80 -s rr 添加ipvsadm集群子节点
ipvsadm -a -t // 虚拟IP:80 -r 网站1:80 -g 添加ipvsadm集群子节点
ipvsadm -a -t // 虚拟IP:80 -r 网站2:80 -g
service ipvsadm save // 保存ipvs集群内容至文件,进行持久化存储
chkconfig ipvsadm on // 设置为开机自启
### --- 关闭网卡守护进程真实服务器
service NetworkManager stop // 关闭网卡守护进程
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
### --- 拷贝回环网卡子接口
vim ifcfg-lo:0 // 拷贝回环网卡子接口
DEVICE=l0:0
IPADDR=虚拟IP
NETMASK=255.255.255.0
### --- 关闭对应ARP响应及公告功能
vim /etc/sysctl.conf // 关闭对应ARP响应及公告功能
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
sysctl -p
ifup lo:0
### --- 添加路由记录,当访问VIP交给lo:0网卡接受
route add-host 虚拟IP dev lo:0 // 添加路由记录,当访问VIP交给lo:0网卡接受
service httpd start
一、负载均衡集群相关调度算法
### --- 静态调度算法
### --- 特点:
~~~ 只根据算法本身去调度,不考虑服务器本身
### --- 算法说明:
~~~ RR 轮询:将每次用户的请求分配给后端的服务器,从第一台服务器开始到第N台结束,然后循环。
~~~ VRR 加权轮询:按照权重的比例实现在多台主机之间机械能调度
~~~ SH(source hash)源地址散列:将同一个IP的用户请求发送给同一个服务器
~~~ DH(destination hash)目标地址散列:将同一个目标地址的用户请求发送给同一个真实服务器(提高缓存的命中率)
### --- 动态调度算法
### --- 特点:
~~~ 除了考虑算法本身,还要考虑服务器状态
### --- 算法说明:
~~~ LC(lest-connection)最少连接,将新的连接请求,分配给连接数最少的服务器的活动连接,活动连接x256+非活动连接
~~~ WLC加权最少连接,特殊的最少连接算法,权重越大承担的请求说越多(活动连接x256+活动连接)/权重
~~~ SED最短期望延迟:特殊的WLC算法(活动连接+1)*256/权重
~~~ NQ永不排队:特殊的SED算法,无需等待,如果有真实服务器额连接数等于0那就直接分配不需要运算
~~~ LBLC特殊的DH算法:技能提高缓存命中率,又要考虑服务器性能
~~~ LBLCR LBLC+缓存,尽可能提高负载均衡呵呵缓存命中率的折中方案
二、LVS持久连接
### --- 持久客户端连接
### --- 定义:
~~~ 每客户端 持久,将来自于同一个客户端的所有请求统统定向至此前选定的RS,也就是只要IP相同,分配的服务器始终相同。
### --- 演示代码:// 添加一个tcp负载集群,集群地址为172.16.0.8,算法为wlc,持久化时间为120s
ipvsadm -A -t 172.16.0.8:0 -s wlc -p 120
### --- 持久端口连接
### --- 定义:
~~~ 没端口持久,将来自于同一个客户端对同一个服务(端口)请求,始终定向至此前选定的RS
### --- 演示代码:// 添加一个tcp负载集群,集群地址为172.16.0.8:80,算法为wlc,持久化时间为120s
ipvsadm -A -t 172.16.0.8:80 -s rr -p 120
### --- 持久防火墙标记连接
### --- 定义:
~~~ 将来自于统一客户端对指定服务(端口)的请求,始终定向至此选定RS,不过它可以将两个毫不相干的端口定义为一个集群服务
### --- 演示代码:
iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 80 -j MARK --set-mark 10
~~~ 添加一个防火墙规则,当目标地址为172.16.0.8并且目标端口为80时给数据包打一个标记,设置Mark值为10
iptables -t managle -A PREROUTING -d 172.16.0.8 -p tcp -dport 443 -j MARK --set-mark 10
~~~ 添加一个防火墙规则,当目标地址为172.16.0.8并且目标端口为443 时给数据包打一个标记,设置Mark值为10
~~~ 保存防火墙规则持久化生效
service iptables save
ipvsadm -A -f 10 -s wlc -p 120
~~~ 添加一个负载调度器,当Mark值为10 时进行负载均衡使用wlc算法,持久化生效时间为120s
三、高可用集群
1、Keepalived相关说明:
### --- 软件相关介绍:
~~~ 案例环境转为LVS和HA设计的一款健康检查工具
~~~ 支持故障自动切换(Failover)
~~~ 支持节点健康状态检查(Health Checking)
~~~ 官方网站:http://www.keepalived.org/
### --- 软件实现原理:
~~~ VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)
~~~ 一主+多备:公用同一个IP地址,但优先级不同
![](https://i-blog.csdnimg.cn/blog_migrate/6d89a3455a48819166e831cce9320618.png)
2、Keepalive+LVS高可用实验构建
![](https://i-blog.csdnimg.cn/blog_migrate/207afb8dc5dee5243cd2949affa2db71.png)
3、实验构建代码:
################################################################################
### --- 负载调度器——1
################################################################################
### --- 构建前提:
### --- 先构建LVS-DR模式的负载均衡集群,可参照上文进行构建
### --- 负载调度器——1
yum -y install kernel-devel openssl-devel popt-devel gcc* // 安装相关Keepalived依赖
tar -zxvf keepalived...... // 源码安装Keepalived软件
cd keep......
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32....../
make
make instal
chkconfig -add keepalived // 设置Keepalived开机自启
chkconfig Keepalived on
### --- 设置Keepalived软件配置
vi /etc/keepalived/keepalived.conf // 设置Keepalived软件配置
global_defs{
router_id R1 // 命名主机名
}
vrrp_instance VI--1 {
state MASTER //设置服务类型主/从(MASTER/SLAVE)
interface eth0 //指定那块网卡用来监听
virtual_router_id 66 //设置组号,如果十一组就是相同的ID号,一个主里面只能有一个主服务器和多个从服务器
priority 100 //服务器优先级,主服务器优先级高
advert_int 1 //心跳时间,检测对方存活
authenticetion { //存活验证密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress{
192.168.1.100 //设置集群地址
}
}
virtual_server 192.168.1.100:80{ //设置集群地址,以及端口号
delay_loop 6 //健康检查间隔
lb_algorr //使用轮询调度算法
lb_kend DR //DR模式的群集
Protocol TCP //使用的协议
real_server 192.168.1.2 80 { //管理的网站节点以及使用端口
weight 1 //权重,优先级在源文件基础上删除修改
TCP_CHECK { //状态检查方式
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //重试间隔(秒)
}
}
real_server 192.168.1.3 80 { //管理的第二个网站节点以及使用端口
weight 1 //权重, 优先级 在源文件基础上删除修改
TCP_CHECK { //状态检查方式
connect_port 80 //检查目标端口
connect_timeout 3 //连接超时(秒)
nb_ger_retry 3 //重试次数
delay_before_retry 4 //重试间隔(秒)
}
}
}
~~~ 多余删除
### --- 发送到其它主机地点
scp keepalived.conf xx.xx.xx.xx: /etc/keepalived/
################################################################################
### --- 负载调度器——2
################################################################################
### --- 负载均衡调度器-2
yum install -y kernel-devel openssl-devel popt-devel gcc* //安装相关Keepalived依赖
tar -zxvf keepalived..... //源码安装Keepalived软件
cd keep......
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32....../
make
make install
chkconfig --add keepalived //设置Keepalived开机自启
chkconfig Keepalived on
### --- 修改从负载调度器-1拷贝的Keepalived配置文件
vim /etc/keepalived/keepalived.conf
//修改1:state MASTER 修改至state SLAVE
//修改2:priority 100 修改至priority 47 一般建议与主服务差值为50
service NetworkManager stop // 启动虚拟接口,必须关闭此服务
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0 // 配置虚拟机接口
DEVICE=eth0:0
IPADDR=虚拟IP
NETMASK=255.255.255.0
ifup eth0:0 // 启动虚拟网卡
vim /etc/sysconfig/network-script/ifup-eth // 如果报错修改文件257
//注释此区域
//修改内核参数,防止相同网络地址广播冲突,如果有多快网卡需要设置多行
### --- 修改内核参数,防止相同网络地址广播冲突,如果有多快网卡需要设置多行
vim /etc/sysctl.conf // 修改内核参数,防止相同网络地址广播冲突,如果有多快网卡需要设置多行
net.ipv4.conf.eth0.send_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.eth0.send_redirects=0
sysctl -p // 刷新内核参数
modprobe ip_vs // 查看内核是否加载,无反应则已加载
cat /proc.net/ip_vs // 查看版本,确认是否正确加载
### --- 安装ipvsadm管理工具
cd /mnt/cdrom/Packages // 进入官潘挂载目录
rpm -ivh ipvsadm-1.261...... // 安装ipvsadm管理工具
ipvsadm -v
ipvsadm -A -t // 虚拟IP:80 -s rr
ipvsadm -Ln // 查看设置的ipvsadm如果没有子项,那么手动添加
ipvsadm -a -t // 虚拟IP:80 -r 网站1:80 -g
ipvsadm -a -t // 虚拟IP:80 -r 网站2:80 -g
四、高可用集群:HeartBeat+Nginx 实验构建
1、实验构建说明:
### --- 软件包:
~~~ 软件包版本为Centos6系列,如果使用其他版本可以配置eperl源下载安装
### --- 环境准备:
~~~ 配置时间同步服务
~~~ 配置主机名解析
~~~ 实验拓扑结构
![](https://i-blog.csdnimg.cn/blog_migrate/4f4add67d76acb01126e8f6628225db1.png)
2、实验构建流程
################################################################################
### --- HeartBeat+Nginx——3
################################################################################
### --- 基础准备,准备节点都需要安装
tar -zxvf hearbeat.tar.gz
cd hearbeat
yum -y install *
cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf authkeys haresources /etc/ha.d/ // 配置文件需拷贝到默认目录下
### --- 认证服务,节点之间的认证配置,修改/etc/ha.d/authkeys,在主上修改
dd if=/dev/random bs=512 count=1 | openssl md5 // 生成秘钥随机数
vim authkeys
auth 1
1 md5 a4d20b0dd3d5e35e0f87ce4266d1dd64
chmod 600 authkeys
### --- hearbeat 主配置文件,修改/etc/ha.d/ha.cf,在主上修改
bcast eth0
node www.centos1.com // 一主一备节点,需注意能被两台主机之间解析
node www.centos2.com
### --- 配置哈resources文件,在主上修改
www.centos1.com IPaddr::10.10.10.100/24/eth0:0
### --- 将主三个配置文件拷贝到从上
cd /etc/ha.d/
scp ha.cf authkeys haresources root@www.contos1.com:/etc./ha.d/
### --- 启动服务进行验证
主:service httpd start
主:service hearthbeat start
备:service httpd start
备:service heartbear start