18.1 集群介绍
18.2 keepalived介绍
18.3/18.4/18.5 用keepalived配置高可用集群
1.第一步准备二台机器,两台机器都执行yum install -y keepalived
2.第二部 二台机器都要安装keepalived
第一台
第二台
3.二台机器要开启nginx服务
4.要在master机器上配置keeplived配置文件,需要把之前的keeplived文件的内容清空
然后加入如下内容
[root@liuhongwei-01 ~]# vim /etc/keepalived/keepalived.conf global_defs { notification_email { 定义接受告警的人 aming@aminglinux.com } notification_email_from root@aminglinux.com 定义发邮件地址, smtp_server 127.0.0.1 定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务发送 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { 为自定义的名字 script "/usr/local/sbin/check_ng.sh" 自定义脚本,该脚本为监控nginx服务的脚本 interval 3 每隔三秒执行一次该脚本 } vrrp_instance VI_1 { state MASTER 角色为master interface ens33 针对哪个网卡监听VIP virtual_router_id 51 priority 100 权重为100,master要比backup大 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com 定义密码,这个密码自定义 } virtual_ipaddress { 192.168.188.100 定义的VIP } track_script { chk_nginx } }
5.然后在我们定义的脚本路径,定义一个监控nginx的脚本
6.编写完脚本之后,需要给文件加上755权限,如果没有这个权限就不会自动加载
7.上面工作准备完成后,在129(master)主机上开启keeplived服务。
8.然后看一下keepalived的进程有没有起来
9.然后在看一下nginx服务有没有起来
10.keepalived的日志在这个目录下
11.我们查看一下VIP
注明:这个公网ip vip是不能用ifconfig查看的,只能用ip add查看
12.在配置从机器(backup)之前要看一下有没有防火墙规则,以及selinux之类的,有的话需要清除防火墙规则,以及关闭selinux
临时关闭selinux
13.同样从机器上也要检查一下防火墙规则以及selinux的状态
我们关闭nginx服务之后,可以看到还是可以自动开启nginx服务,也是因为开启keepalived服务,就会自动帮助我们开启nginx服务 [root@liuhongwei-01 ~]# systemctl stop nginx [root@liuhongwei-01 ~]# ps aux|grep nginx root 5444 0.0 0.0 112664 960 pts/0 R+ 16:08 0:00 grep --color=auto nginx [root@liuhongwei-01 ~]# ps aux|grep nginx root 5464 0.0 0.1 45980 1300 ? Ss 16:08 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 5468 0.0 0.4 48468 4188 ? S 16:08 0:00 nginx: worker process nobody 5469 0.0 0.3 48468 3936 ? S 16:08 0:00 nginx: worker process root 5471 0.0 0.0 112664 960 pts/0 R+ 16:08 0:00 grep --color=auto nginx [root@liuhongwei-01 ~]# ps aux|grep nginx root 5464 0.0 0.1 45980 1300 ? Ss 16:08 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 5468 0.0 0.4 48468 4188 ? S 16:08 0:00 nginx: worker process nobody 5469 0.0 0.3 48468 3936 ? S 16:08 0:00 nginx: worker process root 5479 0.0 0.0 112664 964 pts/0 R+ 16:08 0:00 grep --color=auto nginx [root@liuhongwei-01 ~]#
14.接着去backup上 130备用机去编辑配置文件
首先还是需要把从机器上的keepalived内容清空
15.然后编辑配置文件,加入如下内容
vim /etc/keepalived/keepalived.conf global_defs { notification_email { aming@aminglinux.com } notification_email_from root@aminglinux.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_nginx { script "/usr/local/sbin/check_ng.sh" interval 3 } vrrp_instance VI_1 { state BACKUP 这个地方显示是从机器 interface ens33 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass aminglinux>com } virtual_ipaddress { 192.168.73.100 需要改成和主机一样的vip } track_script { chk_nginx } }
16.也需要在从机器上编辑一个监控脚本
17.同样给监控脚本加上755权限
18.启动keepalived服务
19.怎么区分主和从的nginx 的区别
先用浏览器访问主的ip地址
因为之前我们配置过nginx,可以配置一下nginx 的配置文件,可以更改
20.同样我们也把从机器上的nginx配置文件更改一下,为了区分:
21.我们做实验的时候要用浏览器访问VIP也就是我定义的192.168.93.100
现在说明我们访问的是master机器,也就是主机器
22.正式测试 模拟生产环境中,主机宕机的情况。最简单的方法就是把master机器的keepalived服务停止
停止了keepalived服务,vip会释放,去从机器上看一下
23.看一下从机器上的日志
24.在用浏览器访问一下:
可以看到访问到了backup的机器上了,说明keepalived服务已经到从机器上了
25.接着在主机开启keepalived服务,再看一下
26.一般keepalived高可用集群是最少二台机器的,但是如果多个backup机器,就把权重调整,权重越大,优先级就越大。
18.6 负载均衡集群介绍
18.7 LVS介绍
综上所述,
nat模式
就是做iptables路由转发
IP Tunnel模式
实际上是更改目标IP
DR模式
是更改目标MAC地址
18.8 LVS调度算法
18.9/18.10 LVS NAT模式搭建
1.准备工作
我这里外网设置为67.144
2.需要给01机器添加一个网卡
要设置仅主机模式
然后看一下仅主机的ip段
3.然后在给仅主机的的ens37 设置一下ip 不用设置网关
[root@liuhongwei-01 network-scripts]# cp ifcfg-eno16777736 ifcfg-ens37 [root@liuhongwei-01 network-scripts]# ls ifcfg-eno16777736 ifdown-ippp ifdown-Team ifup-ib ifup-ppp init.ipv6-global ifcfg-ens37 ifdown-ipv6 ifdown-TeamPort ifup-ippp ifup-routes network-functions ifcfg-lo ifdown-isdn ifdown-tunnel ifup-ipv6 ifup-sit network-functions-ipv6 ifdown ifdown-post ifup ifup-isdn ifup-Team ifdown-bnep ifdown-ppp ifup-aliases ifup-plip ifup-TeamPort ifdown-eth ifdown-routes ifup-bnep ifup-plusb ifup-tunnel ifdown-ib ifdown-sit ifup-eth ifup-post ifup-wireless [root@liuhongwei-01 network-scripts]# vi ifcfg-ens37 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736 UUID=1a6dc668-1e56-4388-af94-c2f013a74b14 DEVICE=eno16777736 ONBOOT=yes IPADDR=192.168.67.144 NETMASK=255.255.255.0 #GATEWAY=192.168.93.2 DNS1=119.29.29.29 ~
在做这一项的操作时,不仅需要把网关注释掉,也需要把UUID这一行也要注释掉,否则不能启动网卡
4.然后启动网卡ens37
[root@liuhongwei-01 network-scripts]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.93.129 netmask 255.255.255.0 broadcast 192.168.93.255 inet6 fe80::20c:29ff:fe6c:a8e4 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:6c:a8:e4 txqueuelen 1000 (Ethernet) RX packets 5894 bytes 653680 (638.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2015 bytes 268714 (262.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens37: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.67.144 netmask 255.255.255.0 broadcast 192.168.67.255 inet6 fe80::20c:29ff:fe6c:a8ee prefixlen 64 scopeid 0x20<link> ether 00:0c:29:6c:a8:ee txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5.然后看一下 能否能ping通
6.然后把其他二台机器的网关设置成01机器的ip
7.然后三台机器都要关闭防火墙
8.各自下载iptables 并清空规则和保存
9.然后关闭selinux
10.在dir上安装ipvsadm
安装它是为了实现lvs功能
11.在dir上编写脚本,vim /usr/local/sbin/lvs_nat.sh//内容如下
12。然后执行一下脚本
.
没有输出就没有错误
13.测试效果
需要rs二台机器上安装nginx
14.二台nginx上需要设置不同的主页,便于区分
首先02
03
15.然后就是去浏览器测试,访问公网ip
第一次访问的是03,在刷新几次看看
在刷新的时候就是02了访问02的机器
16.也可以在01机器上curl测试一下
这就说明成功了