Pacemaker + Nginx实现高可用

一、实现高可用

1.server4主机配置nginx

[root@server1 ~]# scp -r /usr/local/nginx/ server4:/usr/local
[root@server4 ~]# ln -s /usr/local/nginx/sbin//nginx /sbin/
[root@server4 ~]# useradd nginx
[root@server4 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2.server1和server4配置pacemaker
注意:
nginx关闭,采用服务管理
配置高可用yum源
server1和server4主机配置要一致

[root@server1 ~]# yum install corosync pacemaker -y
[root@server1 ~]# cd /etc/corosync/
[root@server1 ~]# cp corosync.conf.example corosync.conf
[root@server1 ~]# vim corosync.conf

                bindnetaddr: 172.25.8.0
                mcastaddr: 226.94.1.8
                mcastport: 5405
service {
        name:pacemaker
        ver:0
}

这里写图片描述
这里写图片描述

[root@server1 corosync]# scp corosync.conf server4:/etc/corosync/
root@server4's password: 
corosync.conf                             100%  479     0.5KB/s   00:00    
[root@server1 corosync]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync):               [  OK  ]
[root@server1 corosync]# cd
[root@server1 ~]# ls
crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  nginx-1.14.0.tar.gz
nginx-1.10.1                      nginx-sticky-module-ng
nginx-1.10.1.tar.gz               nginx-sticky-module-ng.tar.gz
nginx-1.14.0                      pssh-2.3.1-2.1.x86_64.rpm
[root@server1 ~]# yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y

server4 做同样的步骤
3.配置crm

[root@server1 corosync]# crm_verify -LV  #如果报错就按以下方式执行:进入crm,关闭fence检查即可
   error: unpack_resources:     Resource start-up disabled since no STONITH resources have been defined
   error: unpack_resources:     Either configure some or disable STONITH with the stonith-enabled option
   error: unpack_resources:     NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid
[root@server1 corosync]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# commit
crm(live)configure# Ctrl-C, leaving
[root@server1 corosync]# crm_verify -LV

4.实现高可用

[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.8.100 cidr_netmask=24 op monitor interval=1min
crm(live)configure# commit
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# commit

lsb:nginx 需要在 /etc/init.d/ 存入nginx脚本

再开一个终端二:

编写Nginx启动脚本,并加入系统服务

[root@server1 ~]# vim /etc/init.d/nginx      
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() {
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload(){
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
configtest(){
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|
restart|configtest}"
RETVAL=1
esac
exit $RETVAL



[root@server1 ~]# chmod 755 /etc/init.d/nginx     #更改文件的执行权限
[root@server1 ~]# chkconfig --add nginx           #加入系统服务启动列表
[root@server1 ~]# chkconfig nginx on                 #开机启动
[root@server1 ~]# /etc/init.d/httpd stop          #nginx的端口为80,在开启nginx服务前一定要确保httpd服务是关的
Stopping httpd:                                            [  OK  ]
[root@server1 ~]# service nginx start             #开启服务
Starting Nginx:                                            [  OK  ]

终端一:

crm(live)configure# primitive nginx lsb:nginx op monitor interval=30s
crm(live)configure# commit

crm(live)configure# group nginxgroup vip nginx 
crm(live)configure# commit

#添加fence时,没有fence_xvm
crm(live)configure# property stonith-enabled=true    
crm(live)configure# primitive vmfence stonith:fence_
fence_legacy   fence_pcmk     fence_virtd    

猜你喜欢

转载自blog.csdn.net/wwy0324/article/details/81331677
今日推荐