Zabbix实现高可用技术
环境拓扑图
初识Keepalived
Keepalived是Linux下的一个轻量级的高可用解决方案,通过虚拟链路冗余协议来实现服务或网络高可用
解释:
如果某个服务器节点出现故障,keepalived将检测到后自动将节点从集群系统里面剔除,当节点被我们人为修复后,keepalived又可以自动将此节点重新加入集群
Keepalived的功能:
1.管理LVS负载均衡软件
2.实现LVS集群节点的健康检查
3.作为系统网络服务的高可用性
Keepalived使用场景:
业务系统需要保证7x24小时不down机,作为业务来说随时都可以用,让你的业务更顽强
Keepalived工作原理:
Keepalived高可用是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有资源,备节点处于等待状态,当主挂掉后,备节点会立刻接管主节点的资源,然后顶替主节点继续对外提供服务。
在 Keepalived 服务之间,只有作为主的服务器会一直发送 VRRP 广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。
使用场景
实验准备
服务器 | 主机 | 虚拟IP |
---|---|---|
zabbix01 | 192.168.1.221 | 172.16.1.1 |
zabbix02 | 192.168.1.222 | 172.16.1.2 |
DB01 | 192.168.1.223 | NULL |
DB02 | 192.168.1.224 | NULL |
搭建Zabbix监控集群
####zabbix01与zabbix02同操作
###配置静态网络
vi /etc/sysconf ig/network-scripts/ifcfg-eno1688832
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=eeac2fc2-e829-43a4-8349-8e0fc5ba628d
DEVICE=ens33
ONBOOT=yes
ZONE=public
IPADDR=192.168.1.99
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS=8.8.8.8
##重启网络
systemctl restart network
###更换yum
##安装wget
yum install -y wget
##进入yum仓库
cd /etc/yum.repo.d/
##备份原有yum源
mv /etc/yum.repo.d/Centos-7.repo /etc/yum.repo.d/Centos-7.repo.bak
##下载新的yum源
wget http://mirrors.aliyun.com/repo/Centos-7.repo
##清除缓存
yum clean all
##生成新的缓存
yum makecache
##安装EPEL
yum install -y epel-release
##再次运行yum clean all清除缓存
yum clean all
yum makecache
##更新yum
yum -y update
##yum错误
vi /etc/resolv.conf
nameserver 8.8.8.8
search localdomain
###安装nginx
##配置nginx源
vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
##安装nginx
yum install -y nginx
##创建存放文件目录
mkdir /html
mv /etc/nginx/conf.d/default.conf{,.back}
##配置conf文件
vi /etc/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name localhost;
location / {
root /html;
index index.php index.html;
}
location ~ \.php$ {
root /html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
###安装php
##安装依赖
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y php72w-fpm php72w-gd php72w-bcmath php72w-xml php72w-mbstring php72w-ldap php72w-mysqlnd
##修改归属
# sed -i '/^user/c user = nginx' /etc/php-fpm.d/www.conf
# sed -i '/^group/c group = nginx' /etc/php-fpm.d/www.conf
##启动nginx和php服务
# systemctl start nginx php-fpm
# systemctl enable nginx php-fpm
##部署zabbix -web
# wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.8.tar.gz
# tar xf zabbix-5.0.8.tar.gz
# mv zabbix-5.0.8/ui/* /html/
# chown -R nginx.nginx /html
# mkdir -p /var/lib/php/session
# chown -R nginx.nginx /var/lib/php/session/
##关闭防火墙
systemctl stop firewalld.service
##关闭SElinux
临时关闭(不用重启机器): setenforce 0 //设置SELinux 成为permissive模式
setenforce 1 设置SELinux 成为enforcing模式
修改配置文件需要重启机器: 修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
搭建Keepalived高可用
###先部署主
##yum安装keepalived
[root@localhost ~]# yum install -y keepalived
##查看keepalived版本信息
[root@localhost ~]# keepalived -v
##修改keepalived配置信息
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
# notification_email { # 邮件通知,一般不用
# test1@163.com
# test2@163.com
# }
# notification_email_from test@163.com
router_id lb01 # 标识本节点的字符串,设置为hostname即可
}
vrrp_instance VI_1 {
state MASTER # 标识主节点服务(只有MASTER和BACKUP两种,大写)
interface ens224 # VIP板顶的网卡接口
virtual_router_id 51 # 虚拟路由id,和备节点保持一致
priority 150 # 优先级,高于备节点的即可。
# nopreempt # 禁止MASTER宕机恢复后抢占服务
# smtp_alert # 激活故障时发送邮件告警
mcast_src_ip 172.16.1.1 # 本机IP地址
advert_int 1 # MASTER和BACKUP节点之间的同步检查时间间隔,单位为秒
authentication { # 验证类型和验证密码
auth_type PASS # PAAS(默认),HA
auth_pass 1111 # MASTER和BACKUP使用相同明文才可以互通
}
virtual_ipaddress { # 虚拟IP地址池,可以多个IP
172.16.1.3 # 虚拟IP1(VIP)
}
}
###配置备
##yum安装keepalived
[root@localhost ~]# yum install -y keepalived
##查看keepalived版本信息
[root@localhost ~]# keepalived -v
##修改keepalived配置信息
! Configuration File for keepalived
global_defs {
router_id zabbix02 # 标识本节点的字符串,设置为hostname即可
}
vrrp_instance VI_1 {
state BACKUP # 标识主节点服务(只有MASTER和BACKUP两种,大写)
interface ens224
virtual_router_id 51
priority 100 # 优先级,高于备节点的即可。
mcast_src_ip 172.16.1.2 # 本机IP地址
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.3
}
}
###配置完成后
主备执行以下操作
[root@localhost ~]# systemctl start keepalived.service
或者
[root@localhost ~]# service keepalived start
ps:
1)重启:
$ systemctl restart keepalived.service
2)停止:
$ systemctl stop keepalived.service
3)状态:
$ systemctl status keepalived.service
4)设置开机启动:
$ chkconfig keepalived on
#查看keepalived状态
[root@localhost ~]# systemctl status keepalived.service