一、配置nginx
ps:server1和server4配置相同
server2和server3都安装httpd并打开,并在默认发布文件中加以区分
1.配置server1和server4
具体步骤请点击这里
[root@server1 ~]# tar zxf nginx-1.14.0.tar.gz
[root@server1 ~]# ls
nginx-1.14.0 nginx-1.14.0.tar.gz
[root@server1 ~]# cd nginx-1.14.0
[root@server1 nginx-1.14.0]# vim auto/cc/gcc ##注释debug
[root@server1 nginx-1.14.0]# vim src/core/nginx.h ##删除版本信息
[root@server1 nginx-1.14.0]# yum install -y gcc
[root@server1 nginx-1.14.0]# yum install -y pcre-devel
[root@server1 nginx-1.14.0]# yum install -y openssl-devel ##解决依赖性
[root@server1 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio ##编译
[root@server1 nginx-1.14.0]# make && make install ##安装
[root@server1 nginx-1.14.0]# ln -s /usr/local/nginx/sbin/nginx /sbin/ ##软连接
实现负载均衡:
[root@server1 conf]# useradd -M -d /usr/local/nginx/ nginx
[root@server1 nginx-1.14.0]# nginx
[root@server1 nginx-1.14.0]# vim /usr/local/nginx/conf/nginx.conf
2 user nginx nginx;
3 worker_processes 1;
18 upstream westos{
19 server 172.25.129.2:80;
20 server 172.25.129.3:80;
21 }
123 server { ##server部分写到最后,中间内容不变
124 listen 80;
125 server_name www.westos.org;
126 location / {
127 proxy_pass http://westos;
128 }
129
130 }
[root@server1 nginx-1.14.0]# vim /usr/local/nginx/conf/nginx.conf
[root@server1 nginx-1.14.0]# 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
[root@server1 nginx-1.14.0]# nginx -s reload
二、高可用(HA)的实现
注意:
(1) 红帽高可用性附加组件最多支持的集群节点数为16
(2) 使用luci配置GUI
(3) 该组件不支持在集群节点上使用NetworkManager.如果已安装NetworkManager,应该删除该程序,且selinux和iptables都为关闭装状态
(4) 集群中的节点使用多播地址彼此沟通.因此必须将红帽高可用附加组件中的每个网络切换以及关联的联网设备配置为启用多播地址并支持IGMP(互联网管理协议)
资料链接:Conga集群管理软件.通过使用Conga,你可以非常方便的配置和管理好你的服务器集群和存储阵列.conga由两部分组成,luci和ricci,luci是跑在集群 管理机器上的服务,而Ricci则是跑在各集群节点上的服务,集群的管理和配置由这两个服务进行通信.
1.server1和server4同时配置conga
ps:提前配置好完整的yum源,server1和server4配置相同
yum install -y luci ricci
chkconfig luci on ##只需在serverq或4中安装luci
chkconfig ricci on
passwd ricci
/etc/init.d/ricci start
/etc/init.d/luci start
netstat -antlp | grep ricci
2.HA集群的配置在浏览器中输入https://server1:8084
集群节点的添加
自动下载安装包:cman-3.0.12.1-59.el6.x86_64
rgmanager-3.0.12.1-19.el6.x86_64
lvm2-cluster-2.02.100-8.el6.x86_64
Gfs2-utils-3.0.12.1-59.el6.x86_64 ##版本可能不同
创建集群完成后,会自动在两节点上生成文件/etc/cluster/cluster.conf
集群失效域failover domain的配置(Name自定义)
相关配置参数:
prioritized参数:选定时,限定节点的优先级,同时需要在节点处添加Priority值,该值越小,优先级越高。
restricted参数:选定时,限定服务只运行在指定的节点上,在多节点且有多个服务组时需指定。
nofailback参数:选定时,限定当优先级低的节点已经在接管资源,优先级高的节点可用时,服务不自动回切。
添加集群资源
- vip的添加
- script的添加
添加服务组(先ip再脚本)
3.在物理机测试:
curl www.westos.org ##注意解析且必须用网名测试,因为nginx配置文件已声明
在节点(server1或server4)上:
clustat
cman_tool status ##查看集群的状态
clusvcadm -r nginx -m server4 ##切换nginx服务至server4节点
手动关闭server1的nginx后:
clustat -s stop
ps:如果意外手动打开nginx,则集群会出现问题,用以下解决方案可以解决:
[root@server1 nginx-1.14.0]# clusvcadm -d nginx ##关闭该服务组
[root@server1 nginx-1.14.0]# clusvcadm -e nginx ##开启该服务组
echo c>/proc/sysrq-trigger 该命令会使内核崩溃,另一节点并不会接管资源,所以引入下面的Fence机制
三、Fence机制的添加
集群中fence的作用:
在HA集群坏境中,备份服务器B通过心跳线来发送数据包来看服务器A是否还活着,主服务器A接收了大量的客户端访问请求,服务器A的CPU负载达到 100%响应不过来了,资源已经耗尽,没有办法回复服务器B数据包(回复数据包会延迟),这时服务器B认为服务器A已经挂了,于是备份服务器B把资源夺过 来,自己做主服务器,过了一段时间服务器A响应过来了,服务器A觉得自己是老大,服务器B觉得自己也是老大,他们两个就挣着抢夺资源,集群资源被多个节点 占有,两个服务器同时向资源写数据,破坏了资源的安全性和一致性,这种情况的发生叫做“脑裂”。服务器A负载过重,响应不过来了,有了Fence机 制,Fence会自动的把服务器A给Fence掉,阻止了“脑裂”的发生
FENCE的工作原理是:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过 FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资 源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。
Fence分类:
硬件Fence:电源Fence,通过关掉电源来踢掉坏的服务器
软件Fence:Fence卡(智能卡),通过线缆、软件来踢掉坏的服务器
使用物理机:172.25.129.250作为fence device
1.物理机的配置
yum install -y fence-virtd.x86_64
fence-virtd-libvirt.x86_64
fence-virtd-multicast.x86_64 ##安装这三个工具
2.生成密钥文件并发给两个节点
mkdir /etc/cluster
cd /etc/cluster
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
scp /etc/cluster/fence_xvm.key 172.25.129.1:/etc/cluster
scp /etc/cluster/fence_xvm.key 172.25.129.4:/etc/cluster
3.编写新的fence信息
fence_virtd -c
systemctl restart fence_virtd
netstat -anlupe |grep 1229 ##查看fence端口
4.在网页管理平台中设定fence (Fence Devices --> Add)
- 为每一个节点添加fence(server4同server1)
5.测试
fence_node server1 ##server1节点被换掉,此时查看server1主机应该进入重启状态,证明fence机制正常工作,server4节点热接管
echo c>/proc/sysrq-trigger ##在server1中输入该命令
clustat