day15.3

打印 上一主题 下一主题

主题 530|帖子 530|积分 1605

day15.3

目录

nginx负载均衡高可用
  1. # keepalived概述
  2. Keepalived是一个高可用软件,可以和任何应用配合使用
复制代码
  1. # 什么是高可用
  2. 一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,对于访问的用户是无感知的。
复制代码
  1. # 高可用软件
  2. 1.硬件  F5
  3. 2.软件  keepalived heartbeat
  4. 3.Mysql  MGR MHA
  5. 4.redis  Redis-Cluster Sentinel
复制代码
keepailved实现原理
  1. # keepalived底层协议:VRRP(虚拟路由冗余协议)
复制代码


keepailved核心概念
  1. 1.通过选举投票,决定谁是主节点谁是备节点(选举)
  2. 2.如果Master故障,Backup自动接管,那么Master恢复后会夺权吗(抢占试、非抢占式)
  3. 3.两台服务器都认为自己是master,那么会出现一个故障(脑裂)
复制代码
keepailved安装配置

环境准备

主机名waniplanip角色应用lb0110.0.0.5172.16.1.5Master keepalived主节点keepalivedlb0210.0.0.6172.16.1.6Backup keepalived备节点keepalived部署keepalive
  1. # 1.安装Keepalived
  2. [root@lb01 ~]# yum -install -y keepalived
  3. # 2.查找Keepalived配置文件
  4. [root@lb01 ~]# rpm -ql keepalived
  5. /etc/keepalived/keepalived.conf
  6. # 3.修改Keepalived配置文件
  7. [root@lb01 conf.d]# vim /etc/keepalived/keepalived.conf
  8. global_defs {                   #全局配置
  9.     router_id lb01              #标识身份->名称
  10. }
  11. vrrp_instance VI_1 {
  12.     state MASTER                #标识角色状态
  13.     interface eth0              #网卡绑定接口
  14.     virtual_router_id 50        #虚拟路由id
  15.     priority 150                #优先级
  16.     advert_int 1                #监测间隔时间
  17.     authentication {            #认证
  18.         auth_type PASS          #认证方式
  19.         auth_pass 1111          #认证密码
  20.     }
  21.     virtual_ipaddress {
  22.         10.0.0.3                #虚拟的VIP地址
  23.     }
  24. }
  25. # 4.修改backup配置文件
  26. [root@lb02 ~]# vim /etc/keepalived/keepalived.conf
  27. global_defs {
  28.     router_id lb02
  29. }
  30. vrrp_instance VI_1 {
  31.     state BACKUP
  32.     interface eth0
  33.     virtual_router_id 50
  34.     priority 100
  35.     advert_int 1
  36.     authentication {
  37.         auth_type PASS
  38.         auth_pass 1111
  39.     }
  40.     virtual_ipaddress {
  41.         10.0.0.3
  42.     }
  43. }
复制代码
Keepalived配置区别master节点配置backup节点配置router_idlb01lb02statemasterbackuppriority150100
  1. # 1.启动master上的Keepalived
  2. [root@lb01 ~]# systemctl start keepalived
  3. [root@lb01 ~]# systemctl enable keepalived
  4. 注意:只要停止掉Keepalived,VIP会漂移到另一个节点
复制代码
非抢占式配置
  1. # 配置需求
  2. 1、两个节点的state都必须配置为BACKUP
  3. 2、两个节点都必须加上配置 nopreempt
  4. 3、其中一个节点的优先级必须要高于另外一个节点的优先级
  5. # mast而节点配置
  6. [root@lb01 ~]# !vim
  7. vim /etc/keepalived/keepalived.conf
  8. global_defs { #全局配置
  9. router_id lb01 #标识身份->名称
  10. }
  11. vrrp_instance VI_1 {
  12. state BACKUP #标识角色状态
  13. interface eth0 #网卡绑定接口
  14. nopreempt
  15. virtual_router_id 50 #虚拟路由id
  16. priority 150 #优先级
  17. advert_int 1 #监测间隔时间
  18. authentication { #认证
  19. auth_type PASS #认证方式
  20. auth_pass 1111 #认证密码
  21. }
  22. virtual_ipaddress {
  23. 10.0.0.3 #虚拟的VIP地址
  24. }
  25. }
  26. # backup节点配置
  27. [root@lb02 ~]# !vim
  28. vim /etc/keepalived/keepalived.conf
  29. global_defs {
  30. router_id lb02
  31. }
  32. vrrp_instance VI_1 {
  33. state BACKUP
  34. interface eth0
  35. nopreempt
  36. virtual_router_id 50
  37. priority 100
  38. advert_int 1
  39. authentication {
  40. auth_type PASS
  41. auth_pass 1111
  42. }
  43. virtual_ipaddress {
  44. 10.0.0.3
  45. }
  46. }
复制代码
脑裂的原因
  1. 1、服务器网线松动等网络故障
  2. 2、服务器硬件故障发生损坏现象而崩溃
  3. 3、主备都开启rewalld防火墙
  4. # 解决脑裂故障
  5. [root@lb02 ~]# vim check_split_brain.sh
  6. #!/bin/sh
  7. vip=10.0.0.3
  8. lb01_ip=10.0.0.5
  9. while true;do
  10. ping -c 2 $lb01_ip &>/dev/null
  11. if [ $? -eq 0 -a `ip add|grep "$vip"|wc -l` -eq 1 ];then
  12. echo "ha is split brain.warning."
  13. else
  14. echo "ha is ok"
  15. fi
  16. sleep 5
  17. done
复制代码
Keepalived结合nginx做高可用

环境准备
主机名waniplanip角色应用lb0110.0.0.5172.16.1.5Master keepalived主节点keepalived、nginxlb0210.0.0.6172.16.1.6Backup keepalived备节点keepalived、nginxweb0110.0.0.7172.16.1.7web网站nginx、phpweb0210.0.0.8172.16.1.8web网站nginx、php关联nginx
  1. # 公司使用脚本
  2. [root@lb01 ~]# vim check_web.sh
  3. #!/bin/sh
  4. nginx_count=$(ps -ef|grep [n]ginx|wc -l)
  5. #1.判断Nginx是否存活,如果不存活则尝试启动Nginx
  6. if [ $nginx_count -eq 0 ];then
  7. systemctl start nginx
  8. sleep 3
  9. #2.等待3秒后再次获取一次Nginx状态
  10. nginx_count=$(ps -ef|grep [n]ginx|wc -l)
  11. #3.再次进行判断, 如Nginx还不存活则停止Keepalived,让地址进行漂移,并退出脚本
  12. if [ $nginx_count -eq 0 ];then
  13. systemctl stop keepalived
  14. fi
  15. fi
  16. # 上课脚本
  17. [root@lb01 ~]# vim check_web.sh
  18. nginx_count=$(ps -ef|grep [n]ginx|wc -l)
  19. if [ $nginx_count -eq 0 ];then
  20.         systemctl stop keepalived
  21. fi
  22. # 关闭lb01上的nginx
  23. [root@lb01 ~]# systemctl stop nginx
  24. # 查看lb02
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表