lamp (adn,ha,lb,nginx,php,tomcat,mysql,redis,meecacha) zabbix ansible/saltstack 自动化配置工具(提高工作效率) docker 容器 elk 日志管理 k8s 监控系统(cka k8s的认证) ci/cd 持续集成,持续交付(k8s)的基础 mfs/hapdop 分布式文件式系统 opeanstack 云平台服务(兼容所用的服务)
lvs 负载均衡 (采用二层网络协议)
实验描述: 虚拟机1 作为调度器 虚拟机2和虚拟机 3 作服务器 利用DR模式实现负载均衡
操作流程
虚拟机1安装 yum install ipvsadm -y ip addr add 172.25.40.100/24 dev eth0 添加一个IP,此IP 为用户访问的IP。
ipvsadm -A -t 172.25.40.100:80 -s rr
ipvsadm -a -t 172.25.40.100:80 -r 172.25.40.2:80 -g
ipvsadm -a -t 172.25.40.100:80 -r 172.25.40.2:80 -g
[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.40.100:80 rr
-> 172.25.40.2:80 Route 1 0 0
-> 172.25.40.3:80 Route 1 0 0
删除策略 ipvsadm -d -t 172.25.40.100:80 -r 172.25.0.2:80
rr 是一种算法。 -g 直连模式 -t tcp 虚拟机2和虚拟机3的 操作 安装httpd yum install -y httpd echo server2 > /var/www /html/index.html systemctl start htppd
yum install -y httpd echo server3 > /var/www /html/index.html systemctl start htppd
此时的使用真实主机进行访问(模拟的是用户的访问),此时可以发现curl命令访问真正的域名的时候,是无法访问到SR的(真正的服务器)
[kiosk@foundation40 Desktop]$ curl 172.25.40.100
^C
[kiosk@foundation40 Desktop]$ curl 172.25.40.100
^C
[kiosk@foundation40 Desktop]$ curl 172.25.40.100
^C
此时作为调度器的虚拟机1,是可以接受到访问请求的
[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.40.100:80 rr
-> 172.25.40.2:80 Route 1 0 2
-> 172.25.40.3:80 Route 1 0 1
[root@server1 ~]#
**原因:**需要在作为服务器的 虚拟机2和虚拟机3 添加vip可以实现访问 **解决方法:**为虚拟机2和虚拟机3添加vip ip addr add 172.25.40.100/32 dev eth0 SR的ip不需要与外网相连 此时已经实现了负载均衡,如果此时还没有实现负载均衡。 排查方式: selinux和防火墙是否关闭,httpd服务是否启动
[root@foundation40 ~]# for i in {1..10};do curl 172.25.40.100;done
server3
server2
server3
server2
server3
server2
server3
server2
server3
server2
DR的实现是通过二层网络协议实现的,调度器积极通过更改mac地址实现的调度
优点: DR直连,有很好的效应速度。 缺点: 无法检测后台服务器是否正常 ,SR和DR必须在一个vlan之中
实验二
在DR模式之下,优化对后台健康的检测 在调度节点(虚拟机1)的操作: yum install keepalived 编辑文件:/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 40
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.40.100
}
}
virtual_server 172.25.40.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCP
real_server 172.25.40.2 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.105.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@server1 keepalived]# systemctl start keepalived.service 此时已经实现对后台节点的健康监测,实验的检测方法:关掉一个结点的httpd然后在进行负载均衡的测试,验证健康监测的成功。 虚拟机2 systemctl stop httpd
[root@foundation40 ~]# for i in {1..10};do curl 172.25.40.100;done
server3
server3
server3
server3
server3
server3
server3
server3
server3
server3
此时的访问都由SR (server3)承担 实现了对后台的健康监测
实验三
实现DR模式下的,调度结点的高可用。 缺点:有一条线路的空闲,对资源的浪费 优点: 系统具有较高的稳定性 实验描述:: 虚拟机1为调度节点 ,虚拟机2和虚拟机3为服务节点,虚拟机4作为虚拟机1的高可用节点 虚拟机4的操作: 下载安装插件 yum install ipvsadm keepalived -y 编辑文件 /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 40
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.40.100
}
}
virtual_server 172.25.40.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCP
real_server 172.25.40.2 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.105.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
修改文件的优先级 和工作模式为BACKUP 此时如果节点1挂掉,节点4会替代节点1成为master。 观察日志文件
dns wrr 健康监测 vrrp协议, CDN
|