rhcs套件和nginx 实现nginx、iscsi磁盘、mysql的高可用

RHCS(Red Hat Cluster Suite),也就是红帽子集群套件,RHCS是一个能够
提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合,它将
集群系统中三大集群架构融合一体,可以给web应用、数据库应用等提供安全、稳定的运行环境。
更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到
后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解
决方案,不但能保证前端应用持久、稳定的提供服务,同时也保证了后端数据存储的安全。
RHCS提供了集群系统中三种集群构架,分别是高可用性集群、负载均衡集群、存储集群。

一、配置图形化Web端

将server1做h1,server4做h2,两个调度器作为高可用节点
server1:172.25.61.1 server4:172.25.61.4

server1:

作为h1,并作为集群管理节点

1、yum源配置

这里写图片描述

并将yum源配置文件传至server4
scp /etc/yum.repos.d/rhel-source.repo 172.25.61.4:/etc/yum.repos.d

2、把nginx传至server4

scp -r /usr/local/nginx/ 172.25.61.4:/usr/local/

3、安装服务、打开服务

yum install luci ricci -y
/etc/init.d/ricci start
/etc/init.d/luci start
设置开机自启
chkconfig luci on
chkconfig ricci on

4、创建密码

passwd ricci

5、建立用户

useradd -M -d /usr/local/nginx/ nginx 
id nginx 
uid=500(nginx) gid=500(nginx) groups=500(nginx)

6、添加主机名解析

vim /etc/hosts
172.25.61.1     server1
172.25.61.4     server4

server4:仅作为h2

1、同步yum源

yum clean all
yum repolist

2、制作软连接

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

3、添加用户

useradd -u 500 nginx

4、安装服务、打开服务

yum install ricci -y
/etc/init.d/ricci start
chkconfig ricci on

5、创建密码

passwd ricci

6、添加解析地址

vim /etc/hosts
172.25.61.1     server1
172.25.61.4     server4

物理机:

添加解析地址

vim /etc/hosts
172.25.61.1     server1
172.25.61.4     server4

浏览器访问:https://172.25.61.1:8084,luci自动开启8084端口接受集群节点的11111端口的数据包
使用server1的root密码登陆;
这里写图片描述
创建集群并添加集群节点;
这里写图片描述
设置中,server1和server4会重新启动
可以通过ps ax查看进程知道,两个集群节点开始安装集群套件,之后重启后加入集群中
浏览器看到创建成功:
这里写图片描述
命令查看 clustat
这里写图片描述

二、在搭建好的集群上添加Nginx服务

配置 Luci web 端

1、选择Failover Domains,用来做业务切换

数字小的优先级高

这里写图片描述

2、添加共享服务

IP:选择Resourcs,点击Add,选择添加IPAddress如图,添加的ip必须是
未被占用的ip,24是子网掩码的位数,5指的是等待时间为5秒。选择Submit

这里写图片描述

IP:nginx:以相同的方法添加Script,nginx是服务的名字,/etc/init.d/nginx是服务启动脚本的路径,选择Submit

这里写图片描述

注:脚本设置

server1:

脚本位置 /etc/init.d/nginx
脚本内容
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload)
        reload
        ;;
restart)
        stop
        start
        ;;
status)
        status $prog
        RETVAL=$?
        ;;

*)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac
exit $RETVAL
给权限
chmod +x nginx
检测:nginx能够打开和关闭且有进程
/etc/init.d/nginx start
ps ax 查看nginx进程
/etc/init.d/nginx stop 
ps ax 查看无进程
脚本无误后传给server4:
[root@server1 init.d]# scp nginx server4:/etc/init.d/

server4:

收到脚本后,开启关闭nginx服务查看能否开启关闭且有进程

3、

选择Service Groups,点击Add如图,nginx是服务的名字,下面两个勾指分别
的是自动开启服务、运行 ,选择Add Resource,将全局资源IP Address 和Script按顺序加入

这里写图片描述

4、检测:

此时我们的nginx高可用已经做好了,在server1或4中使用clustat可以查看状态

这里写图片描述

网页输入IP查看
可看到nginx的访问页面

这里写图片描述
测试nginx的负载均衡,停掉一个server上的nginx,另一台server的nginx就自动启动

[root@server4 init.d]# /etc/init.d/nginx stop

这里写图片描述

server4重启,nginx在server1自动启动

这里写图片描述

三、安装fence系统

但是当意外原因导致主机异常或宕机时(而不是简单的停掉服务时),备用机会首先调用fence设备,然后通过fence设备将异常的主机重启或从网络上隔离,释放异常主机占据的资源,当隔离操作成功后,返回信息给备用机,备用机在接到信息后,开始接管主机的服务和资源。

FENCE的原理:通过栅设备可以从集群共享存储中断开一个节点,切断I/O以保证数据的完整性。
当CMAN确定一个节点失败后,它在集群结构中通告这个失败的节点,fenced进程将失败的节点隔离,
以保证失败节点不破坏共享数据。它可以避免因出现不可预知的情况而造成的“脑裂”(split-brain)现象。
“脑裂”是指当两个节点之间的心跳线中断时,两台主机都无法获取对方的信息,此时两台主机都认为自己
是主节点,于是对集群资源(共享存储,公共IP地址)进行争用,抢夺。
RHCS的Fence设备可以分为两种:内部Fence和外部Fence。内部fence有IBMRSAII卡,
HP的ILO卡,以及IPMI设备等;外部FENCE设备有UPS,SAN switch ,Network switch等。
当节点A上的栅过程发现C节点失效时,它通过栅代理通知光纤通道交换机将C节点隔离,从而释放占用的共享存储。
当A上的栅过程发现C节点失效时,它通过栅代理直接对服务器做电源power on/off,而不是去执行操作系统的开关机指令。

物理机:

1、安装服务

yum install fence-virtd-multicast.x86_64 fence-virt.x86_64 fence-virtd-libvirt.x86_64 -y

2、创建fence

fence_virtd -c

这里写图片描述
重启服务

systemctl restart fence_virtd

3、创建cluster目录

[root@foundation61 ~]# mkdir /etc/cluster
[root@foundation61 ~]# cd /etc/cluster/

4、生成随机密钥文件,重启服务

[root@foundation61 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.000138642 s, 923 kB/s
[root@foundation61 cluster]# systemctl restart fence_virtd

5、查看端口

[root@foundation61 cluster]# netstat -anulp |grep fence_virtd
udp        0      0 0.0.0.0:1229            0.0.0.0:*                           8545/fence_virtd    

6、把密钥文件传递给server1和server4

scp fence_xvm.key 172.25.61.1:/etc/cluster/
scp fence_xvm.key 172.25.61.4:/etc/cluster/
#注意:fence_xvm.key用于fence连接集群节点的认证

7、创建fence设备

选择Fence Devices 中点击Add如图

这里写图片描述

选择Nodes点server1,点击Add Fence Methodvmfence1
选择 vmence1Add Fence Instance
添加Domain为虚拟机的uuid
server4同理

这里写图片描述
这里写图片描述
测试:

server1中输入命令让server4重启
[root@server1 cluster]# fence_node server4
将server1网络关闭,本机重启,nginx自动在server4上运行

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

而在未安装fence之前,如果某个节点的网络断掉或者宕机时,集群调度会出问题,是FENCE服务完美的解决了这个问题。

四、在搭建好的集群上添加服务sicis共享磁盘
服务端:server2 客户端:server1、server4
1、服务端配置
server2:

添加一个8G的磁盘

这里写图片描述

fdisk -l 查看

这里写图片描述

安装服务
yum install -y scsi-*
编辑文件
vim /etc/tgt/targets.conf
 38 <target iqn.2018-08.com.example:server.target1>
 39     backing-store /dev/vdb
 40     initiator-address 172.25.10.1
 41     initiator-address 172.25.10.4
 42 </target>
/etc/init.d/tgtd start

这里写图片描述

查看配置是否成功
tgt-admin -s

这里写图片描述
2、客户端配置
server1:

安装服务
yum install -y iscsi-*
登陆
[root@server1 ~]# iscsiadm -m discovery -t st -p 172.25.61.2
Starting iscsid:                                           [  OK  ]
172.25.61.2:3260,1 iqn.2018-08.com.example:server.target1
[root@server1 ~]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2018-08.com.example:server.target1, portal: 172.25.61.2,3260] (multiple)
Login to [iface: default, target: iqn.2018-08.com.example:server.target1, portal: 172.25.61.2,3260] successful.
查看共享磁盘
fdisk -l 

这里写图片描述

查看状态
[root@server1 ~]# /etc/init.d/clvmd status
clvmd (pid  1261) is running...
Clustered Volume Groups: (none)
Active clustered Logical Volumes: (none)
[root@server1 ~]# lvs
  LV      VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root VolGroup -wi-ao---- 18.54g                                             
  lv_swap VolGroup -wi-ao---- 992.00m 

server4:

安装服务
yum install -y iscsi-*
登陆
iscsiadm -m discovery -t st -p 172.25.10.2
iscsiadm -m node -l  
查看是否同步
[root@server4 ~]# cat /proc/partitions 
major minor  #blocks  name

 252        0   20971520 vda
 252        1     512000 vda1
 252        2   20458496 vda2
 253        0   19439616 dm-0
 253        1    1015808 dm-1
   8        0    8388608 sda

3、创建lvm分区
server1:

给设备拉伸
[root@server1 ~]# pvcreate /dev/sda 
  Physical volume "/dev/sda" successfully created
[root@server1 ~]# vgcreate clustervg /dev/sda 
  Clustered volume group "clustervg" successfully created
[root@server1 ~]# lvcreate -L 2G -n demo clustervg
  Logical volume "demo" created
在server1和server4用lvs查看

注:在扩展分区时最好做一步在另一端lvs查看一步,以免发生做到最后不同步的现象
这里写图片描述
这里写图片描述

格式化分区
[root@server1 ~]# mkfs.ext4 /dev/clustervg/demo 

五、在搭好的集群上添加mysql服务
1、停用nginx高可用
命令

[root@server1 ~]# clusvcadm -d nginx

在luci Web端

1、选择Service Groups,在nginx前面打勾,选择Delete (无图)
2、选择Resourcs,在nginx前面打勾,选择Delete

这里写图片描述
2、安装mysql服务

server1:
[root@server1 ~]# yum install -y mysql
[root@server1 ~]# yum install -y mysql-server
server4:
[root@server4 ~]# yum install -y mysql-server

3、mysql调试
server1:

尝试挂载
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# mount /dev/clustervg/demo  /var/lib/mysql/
[root@server1 mysql]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root  19134332 1315256  16847096   8% /
tmpfs                           510188   25656    484532   6% /dev/shm
/dev/vda1                       495844   33472    436772   8% /boot
/dev/mapper/clustervg-demo     4128448  139256   3779480   4% /var/lib/mysql
修改组
[root@server1 mysql]# ll -d /var/lib/mysql/
drwxr-xr-x 3 root root 4096 Aug  2 15:42 /var/lib/mysql/
[root@server1 mysql]# chown mysql.mysql /var/lib/mysql/
[root@server1 mysql]# ll -d /var/lib/mysql/
drwxr-xr-x 3 mysql mysql 4096 Aug  2 15:42 /var/lib/mysql/
开启服务
[root@server1 mysql]# /etc/init.d/mysqld start
查看目录
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# ls
ibdata1  ib_logfile0  ib_logfile1  lost+found  mysql  mysql.sock  test
[root@server1 mysql]# cd
关闭服务
[root@server1 ~]# /etc/init.d/mysqld stop
[root@server1 ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root  19134332 1315260  16847092   8% /
tmpfs                           510188   25656    484532   6% /dev/shm
/dev/vda1                       495844   33472    436772   8% /boot
/dev/mapper/clustervg-demo     4128448  160724   3758012   5% /var/lib/mysql
取消挂载
[root@server1 ~]# umount /var/lib/mysql/

server4:

[root@server4 ~]# mount /dev/clustervg/demo /var/lib/mysql/
随着server1的修改,server4也修改了
[root@server4 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 5 mysql mysql 4096 Aug  2 15:49 /var/lib/mysql/
查看目录
[root@server4 ~]# cd /var/lib/mysql/
[root@server4 mysql]# ls
ibdata1  ib_logfile0  ib_logfile1  lost+found  mysql  test
将服务开启和关闭
[root@server4 mysql]# /etc/init.d/mysqld start
[root@server4 mysql]# /etc/init.d/mysqld stop
[root@server4 mysql]# cd
查看挂载
[root@server4 ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root  19134332 1077736  17084616   6% /
tmpfs                           510188   25656    484532   6% /dev/shm
/dev/vda1                       495844   33472    436772   8% /boot
/dev/mapper/clustervg-demo     4128448  160724   3758012   5% /var/lib/mysql
取消挂载
[root@server4 ~]# umount /var/lib/mysql/
[root@server4 ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root  19134332 1077736  17084616   6% /
tmpfs                           510188   25656    484532   6% /dev/shm
/dev/vda1                       495844   33472    436772   8% /boot

4、
luci Web端

选择Resourcs,点击Add,添加Filesystem,如图
选择Resources,点击Add,添加Script,如图
选择Service Group添加组 
按顺序添加Resources:IP Filesystem Script

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

Web端配置后,server1中自动挂载

df

这里写图片描述

ps ax查看进程

这里写图片描述

数据库查看

这里写图片描述

可查看目录

这里写图片描述

luci Web端

选择Service Groups
在mysql组前打勾
Status Running on server1 处选择server4
点右边的start键

这里写图片描述

clustat查看

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值