RHCS套件实现高可用负载均衡集群(一)

一、RHCS

什么是RHCS

RHCS即 RedHat Cluster Suite ,中文意思即红帽集群套件。 红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用不同的配置,以满足你的对高可用性,负载均衡,可扩展性,文件共享和节约成本的需要。

提供有如下两种不同类型的集群:

  • 1.高可用性:应用/服务故障切换-通过创建n个节点的服务器集群来实现关键应用和服务的故障切换
  • 2.负载均衡:IP 负载均衡-对一群服务器上收到的 IP 网络请求进行负载均衡

RHCS特点

  • 最多支持128个节点(红帽企业Linux 3 和红帽企业Linux 4 支持 16 个节点
  • 可同时为多个应用提供高可用性
  • NFS/CIFS 故障切换:支持 Unix 和 Windows 环境下使用的高可用性文件。
  • 完全共享的存储子系统:所有集群成员都可以访问同一个存储子系统
  • 综合数据完整性:使用最新的 I/O 屏障(barrier)技术,如可编程的嵌入式和外部电源开关装置(power switches)
  • 服务故障切换:红帽集群套件可以确保及时发现硬件停止运行或故障的发生并自动恢复系统,同时,它还可以通过监控应用来确保应用的正确运行并在其发生故障时进行自动重启

集群相关术语

  • 节点(node):运行集群进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和集群软件服务,在集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。
  • 资源(resource):资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管。
  • 事件(event):也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。
  • 动作(action):事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动。进而接管故障节点的资源。

集群大致结构

这里写图片描述

二、搭建RHCS环境

基本环境搭建

  • 操作系统:rhel6.5

  • 准备五台主机:
    物理机:172.25.54.250,作为fence, 暂时不用
    server1:172.25.54.1, 下载ricci,luci(为了提供Conga配置用户界面),server1作为主节点
    server2:172.25.54.2, 下载ricci,server2作为副节点
    server3:172.25.54.3 后面作iscci共享存储,此时暂时用作RS进行负载均衡测试
    server4:172.25.54.4 ,作为RS,负载均衡测试
    注:
    从红帽企业版 Linux 6.1 开始,您在任意节点中使用 ricci 推广更新的集群配置时要求输入密码。所以在前面两台主机安装完成ricci后需要修改ricci用户的密码,这个是后面节点设置的密码,并且要作时间同步;然后启动安装的服务

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

  • 避免其他因素影响:关闭所有防火墙,禁用selinux

  • server1 和server2:配置高可用 yum 源

    这里写图片描述

  • 物理机添加本地解析

[root@foundation54 ~]# vim /etc/hosts
172.25.54.1 server1
172.25.54.2 server2

创建集群

  • 浏览器访问 https://172.25.54.1:8084
    在网页浏览器的地址栏中输入 cman 服务器的 URL
    luci服务器的URL语法为https://172.25.54.1:luci_server_prot
    luci_server_port 的默认值为 8084

    首次访问时,需做以下操作:
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
[root@server1 ~]# clustat 
Cluster Status for tutu1 @ Wed Aug  1 10:38:44 2018
Member Status: Quorate

 Member Name                                       ID   Status
 ------ ----                                       ---- ------
 server1                                               1 Online, Local
 server2                                               2 Online

[root@server1 ~]#

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
脚本制作

[root@server1 ~]# vim /etc/init.d/nginx
[root@server1 ~]# cat /etc/init.d/nginx 
#!/bin/bash
#
# 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
[root@server1 ~]# chmod a+x /etc/init.d/nginx   //使脚本有执行权限

查看server1 和 server2 的 nginx 服务状态

[root@server1 ~]# /etc/init.d/nginx status
nginx is stopped
[root@server1 ~]# 

[root@server2 ~]# /etc/init.d/nginx status
nginx is stopped
[root@server2 ~]#

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

[root@server1 ~]# cat /usr/local/nginx/html/test.html
<h1>www.westos.com server1</h1>
[root@server1 ~]#

[root@server2 ~]# cat /usr/local/nginx/html/test.html
<h1>www.westos.com server2</h1>
[root@server2 ~]#

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

[root@server1 ~]# /etc/init.d/nginx stop
Stopping nginx:                                            [  OK  ]
[root@server1 ~]#

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

负载均衡——加入RS:server3, server4

  • 添加物理机本地解析
[root@foundation54 ~]# vim /etc/hosts
172.25.54.100   www.westos.org bbs.westos.org westos.org
172.25.54.1 server1
172.25.54.2 server2
[root@foundation54 ~]#

修改 server1 和 server2 的nginx配置文件

// vim /usr/local/nginx/conf/nginx.conf  内容如下:
  2 user  nginx nginx;
  3 worker_processes  1;
  4 worker_cpu_affinity 1;
 13 events {
 14     worker_connections  65535;
 15 }
// 下面添加的内容在 http { } 中
 19         upstream westos {
 20         #ip_hash;
 21         #server 172.25.54.2:80;
 22         server 172.25.54.3:80;
 23         server 172.25.54.4:80;
 24         server 127.0.0.1:80 backup;
 25         }
125         server {
126                 listen 80;
127                 server_name www.westos.org;
128 
129                 location / {
130                 proxy_pass http://westos;
131                 }
132         }

编辑 server3 和 server4 的网页发布内容

[root@server3 ~]# vim /var/www/html/index.html 
[root@server3 ~]# cat /var/www/html/index.html 
<h1>server3</h1>
[root@server3 ~]# 

[root@server4 ~]# vim /var/www/html/index.html 
[root@server4 ~]# cat /var/www/html/index.html 
<h1>server4</h1>
[root@server4 ~]#

测试

[root@server1 ~]# clustat 
Cluster Status for tutu @ Thu Aug  2 12:58:56 2018
Member Status: Quorate

 Member Name                                      ID   Status
 ------ ----                                      ---- ------
 server1                                              1 Online, Local, rgmanager
 server2                                              2 Online, rgmanager

 Service Name                            Owner (Last)                            State         
 ------- ----                            ----- ------                            -----         
 service:nginx                           server1                                 started       
[root@server1 ~]# /etc/init.d/nginx status
nginx (pid 30422 30420) is running...
[root@server1 ~]#

[root@server2 ~]# /etc/init.d/nginx status
nginx is stopped
[root@server2 ~]#

[root@server1 ~]# /etc/init.d/nginx stop
Stopping nginx:                                            [  OK  ]
[root@server1 ~]#

[root@server2 ~]# clustat 
Cluster Status for tutu @ Thu Aug  2 12:59:29 2018
Member Status: Quorate

 Member Name                                      ID   Status
 ------ ----                                      ---- ------
 server1                                              1 Online, rgmanager
 server2                                              2 Online, Local, rgmanager

 Service Name                            Owner (Last)                            State         
 ------- ----                            ----- ------                            -----         
 service:nginx                           server12                                 started   

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

[root@foundation54 ~]# curl www.westos.org
<h1>server3</h1>
[root@foundation54 ~]# curl www.westos.org
<h1>server4</h1>
[root@foundation54 ~]# curl www.westos.org
<h1>server3</h1>
[root@foundation54 ~]# curl www.westos.org
<h1>server4</h1>
[root@foundation54 ~]# curl www.westos.org
<h1>server3</h1>
[root@foundation54 ~]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值