zabbix的高可用(pacemaker+haproxy)

实验目的:利用pacemaker+haproxy实现zabbix的高可用

实验环境:
两台centos
环境部署:

下载阿里源:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

下载zabbix:
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm

两台都关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
sed -i ‘/^SELINUX=./c SELINUX=disabled’ /etc/selinux/config
sed -i 's/^SELINUXTYPE=.
/SELINUXTYPE=disabled/g’ /etc/selinux/config
grep --color=auto ‘^SELINUX’ /etc/selinux/config
setenforce 0

安装软件:
yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb zabbix-agent -y
yum install corosync pacemaker pcs fence-agents resource-agents -y
yum install haproxy -y

初始化数据库:
mysql_secure_installation

#SQL root密码:
DBPass=open2017
echo “#
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
#”>/etc/my.cnf.d/openstack.cnf
zabbix的高可用(pacemaker+haproxy)_第1张图片
实验开始:
一,双主配置:
vi /etc/my.cnf.d/openstack.cnf
1、配置文件里面加入以下三行
[mysqld]
log_bin=mysql-bin #开启二进制日志
server_id=1 #设置server id号
relay_log=mysql-relay-bin #开启中继日志
2、创建账户
grant replication client,replication slave on . to bai@‘从库ip’ identified by ‘redhat’;
3、查看主库状态
show master status\G
zabbix的高可用(pacemaker+haproxy)_第2张图片

如果没有主库状态,重启mariadb服务。在进到数据库查看。
4, 从库关联主数据库
change master to master_host=‘主库ip’,master_user=‘bai’,master_password=‘redhat’;
5,检查
show slave status\G;
zabbix的高可用(pacemaker+haproxy)_第3张图片

6,两台做一样的配置。双主完成。

二,Zabbix配置
1,vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai #修改成Asia/Shanghai
2,进到数据库创建用户。
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@’%’ identified by ‘123456’;
exit
3,导入数据库
cd /usr/share/doc/zabbix-server-mysql-4.2.4/
zcat create.sql.gz |mysql -uzabbix -p123456 zabbix #导入数据库
查看:zabbix的高可用(pacemaker+haproxy)_第4张图片

4,修改zabbix配置
首先要在hosts文件加入主机和ip映射
zabbix的高可用(pacemaker+haproxy)_第5张图片vi /etc/zabbix/zabbix_server.conf
DBHost=虚拟主机ip#数据库所在主机
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户
DBPassword=123456 #数据库密码
zabbix的高可用(pacemaker+haproxy)_第6张图片

5,启动zabbix服务和http
systemctl start zabbix-server
systemctl enable zabbix-server
systemctl start httpd
systemctl enable httpd
6,web界面访问
zabbix的高可用(pacemaker+haproxy)_第7张图片
zabbix的高可用(pacemaker+haproxy)_第8张图片zabbix的高可用(pacemaker+haproxy)_第9张图片zabbix的高可用(pacemaker+haproxy)_第10张图片

三,配置pacemaker+haproxy案例
1,#启动pcsd
systemctl enable pcsd.service
systemctl start pcsd.service
2,#修改群集用户hacluster密码
echo centos | passwd --stdin hacluster
在这里插入图片描述
########################
#其中一节点执行 controller1
3,#创建、启动my_cluster集群
pcs cluster auth -u hacluster -p centos 主机名1 主机名2
pcs cluster setup --start --name my_cluster 主机名1 主机名2
4,pcs cluster enable --all #集群自启动
#pcs cluster start --all # 启动集群
pcs cluster status #集群状态
5,pcs property set stonith-enabled=false #禁用STONITH,关闭仲裁
6,创建本机资源池和mariadb资源池:
pcs resource create VirtualIP ocf?IPaddr2 ip=虚拟ip cidr_netmask=24 op monitor interval=28s
pcs resource create mariadb systemd:mariadb op monitor interval=28s – -clone
zabbix的高可用(pacemaker+haproxy)_第11张图片

7,haproxy已经安装成功
配置haproxy,在所有节点执行。
#允许没VIP时启动
echo “net.ipv4.ip_nonlocal_bind = 1” >>/etc/sysctl.conf
echo “net.ipv4.ip_forward = 1” >>/etc/sysctl.conf
sysctl -p

8,#haproxy日志(可做可不做)
echo ’
$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%rawmsg% \n"
local0.=info -/var/log/haproxy.log;Haproxy
local0.notice -/var/log/haproxy-status.log;Haproxy
'>/etc/rsyslog.d/haproxy.conf
systemctl status rsyslog.service
systemctl restart rsyslog.service

cp /etc/haproxy/haproxy.cfg{,.bak}

9,#默认配置
echo ’
###########全局配置#########
global
log 127.0.0.1 local0 #[日志输出配置,所有日志都记录在本机,通过local0输出]
log 127.0.0.1 local1 notice #定义haproxy 日志级别[error warringinfo debug]
daemon #以后台形式运行harpoxy
nbproc 1 #进程数量
maxconn 4096 #最大连接数
user haproxy #运行用户
group haproxy #运行组
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
########默认配置############
defaults
log global
mode http #默认模式{ tcp|http|health },tcp是4层,http是7层,health只会返回OK
option httplog #日志类别,采用httplog
option dontlognull #不记录健康检查日志信息
retries 2 #2次连接失败不可用,也可以通过后面设置
option forwardfor #后端服务获得真实ip,如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option httpclose #请求完毕后主动关闭http通道,,haproxy不支持keep-alive,只能模拟这种模式的实现
option abortonclose #服务器负载很高,自动结束掉当前队列处理比较久的链接
maxconn 4096 #最大连接数
timeout connect 5m #连接超时
timeout client 1m #客户端超时
timeout server 31m #服务器超时
timeout check 10s #心跳检测超时
#timeout http-keep-alive10s #默认持久连接超时时间
#timeout http-request 10s #默认http请求超时时间
#timeout queue 1m #默认队列超时时间
balance roundrobin #负载均衡方式,轮询
#balance source #设置默认负载均衡方式,类似于nginx的ip_hash
#balnace leastconn #设置默认负载均衡方式,最小连接数
########统计页面配置########
listen stats
bind 0.0.0.0:1080 #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称
mode http #http的7层模式
option httplog #采用http日志格式
log 127.0.0.1 local0 err #错误日志记录
maxconn 10 #最大连接数
stats refresh 30s #统计页面自动刷新时间
stats uri /admin #状态页面 http//ip:1080/admin访问
stats realm Haproxy\ Statistics #统计页面密码框上提示文本
stats auth admin:admin #用户和密码:admin
stats hide-version #隐藏版本信息
stats admin if TRUE #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本)
'>/etc/haproxy/haproxy.cfg

修改完配置文件,把这个文件copy到另一台服务器。
scp [email protected]:/etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg
之后再重启haproxy服务:
systemctl restart haproxy.service
systemctl status haproxy.service
#systemctl disable haproxy.service
但是:
zabbix的高可用(pacemaker+haproxy)_第12张图片
10,出现了上面这个问题,解决如下:
vim /etc/haproxy/haproxy.cfg。添加一个工作模式
新添加一个listen模块
zabbix的高可用(pacemaker+haproxy)_第13张图片

把文件刷新到另一个节点再重启服务。
scp [email protected]:/etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg
systemctl restart haproxy.service
再去查看就变成yes了。
再去访问刚刚添加的虚拟端口。
zabbix的高可用(pacemaker+haproxy)_第14张图片

查看监听端口:
zabbix的高可用(pacemaker+haproxy)_第15张图片

访问1080:
账户名admin,密码admin
zabbix的高可用(pacemaker+haproxy)_第16张图片

你可能感兴趣的:(高可用)