RHCS集群,高可用服务器

高可用
红帽集群套件,提供高可用性,高可靠性,负载均衡,快速的从一个节点切换到另一个节点(最多16个节点)
负载均衡
通过lvs提供负载均衡,lvs将负载通过负载分配策略,将来自于客户端的请求分配到服务器节点
当某个服务器节点无法提供服务,节点将被从集群中剔除
存储集群功能
rhcs通过gfs文件系统提供存储集群功能
gfs即global file system,允许多个服务同时读写一个单一的共享文件系统
通过gfs消除在应用程序间同步数据的麻烦
通过锁管理机制来协调和管理多个服务节点对同一文件系统的读写操作

RHCS组件
核心组件:
cman:集群管理器
rgmanger:集群资源管理器
corosync:集群间通信软件
rcci:集群远程管理器
附加组件:
LVS
GFS:红帽公司开发,gfs不能孤立存在,需要rhcs底层组支持
CLVM:集群逻辑卷管理,lvm的扩展,允许集群使用lvm来管理共享存储
iSCSI:新型存储技术
GNBD:全局网络模块,gfs的一个补充组件,用于rhcs分配和管理共享存储

RHCS运行原理
分布式集群管理器CMAN
运行在全部节点上提供集群管理任务
用于管理集群成员,消息和通知
根据每个节点上的运行状态统计法定节点数作为集群是否存活的依据
分布式锁管理器DLM
是rhcs的一个底层基础构建,为集群提供了一个公用的锁运行机制
运行在每个节点上,gfs通过dlm的锁机制来同步访问文件系统的元数据
clvm通过dlm来同步更新数据到lvm卷和卷组
避免了单个节点失败需要整体恢复的性能瓶颈
栅设备FENCE
集群中必不可少的一个组成部分,避免因不可预知的情况下造成的脑裂现象
脑裂指由于节点间不能获知对方信息,都认为自己是主节点,从而出现资源竞争的情况
主节点异常或宕机时,备机首先调用fence设备,将异常节点重启或从网络上隔离
fence机制可通过电源fence或存储fence实现

——————————————————————————————————————————————————————————————————————

实例:搭建rhcs服务器
环境:两个节点参与集群,第三个节点提供共享存储
服务器:jiedian1
eth0:192.168.4.1
eth1:192.168.2.1
eth2:201.1.1.1(对外提供服务)
eth3:201.1.2.1
服务器:jiedian2
eth0:192.168.4.2
eth1:192.168.2.2
eth2:201.1.1.2(对外提供服务)
eth3:201.1.2.2
存储节点需要额外的硬盘,不需要配置对外提供服务的ip
服务器:cunchu
eth0:192.168.4.3
eth1:192.168.2.3
eth3:201.1.2.3
qemu-img create -f qcow2 /var/lib/libvirt/images/iscsi1.img 20G

配置yum
[root@jiedian1 ~]# cat /etc/yum.repos.d/rhel6.repo(把所有的仓库做成yum,并把配置文件拷贝到其它主机的yum配置下)
[rhel-6]
name=Linux NSD
baseurl=file:///root/myiso/
... ... ...
[hig]
name=Linux NSD
baseurl=file:///root/myiso/HighAvailability/
... ... ...
[loa]
name=Linux NSD
baseurl=file:///root/myiso/LoadBalancer
... ... ...
[res]
name=Linux NSD
baseurl=file:///root/myiso/ResilientStorage
... ... ...
[sca]
name=Linux NSD
baseurl=file:///root/myiso/ScalableFileSystem
... ... ...
[root@jiedian1 ~]# scp /etc/yum.repos.d/rhel6.repo xxx.xxx.x.x:/etc/yum.repos.d/
在存储端配置iSCIS
[root@cunchu ~]# parted /dev/vdb(为存储磁盘分区)
(parted) mklable gpt
(parted) mkpart primary ext4 1M -1
[root@cunchu ~]# yum -y install scsi-target-utils
[root@cunchu ~]# vim /etc/tgt/targets.conf
<target iqn.2017-09.org.hydra.hydra007>
backing-store /dev/vdb1
initiator-address 192.168.4.1
initiator-address 192.168.4.2
initiator-address 192.168.2.1
initiator-address 192.168.2.2
</target>
[root@cunchu ~]# /etc/init.d/tgtd start; chkconfig tgtd on
[root@cunchu ~]# tgt-admin -s
... ...
LUN: 1(有lun1就可以)
... ...
在两个集群节点配置iSCSI客户端和多路径(两台做相同的操作)
[root@jiedian1 ~]# yum -y install iscsi-initiator-utils
[root@jiedian1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.3 --discover
[root@jiedian1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.3 --discover
[root@jiedian1 ~]# service iscsi restart
[root@jiedian1 ~]# lsblk (查看块硬盘)
sdb 8:16 0 20G 0 disk
sda 8:0 0 20G 0 disk
[root@jiedian1 ~]# chkconfig iscsid on
[root@jiedian1 ~]# yum -y install device-mapper-multipath(安装多路径包)
[root@jiedian1 ~]# mpathconf --user_friendly_names n(生成配置文件)
[root@jiedian2 ~]# scsi_id --whitelisted --device=/dev/sda(获取wwid信息)
1IET 00010001
[root@jiedian1 ~]# vim /etc/multipath.conf
defaults {
user_friendly_names no
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
}
... ...
multipaths {
multipath {
wwid "1IET 00010001"(填写wwid-硬件信息)
alias mpatha(别名)
}
}
[root@jiedian1 ~]# /etc/init.d/multipathd start;chkconfig multipathd on
如果集群节点上安装着NetworkManager服务则需要关闭NetworkManager服务
为三台服务器都配置名称解析
[root@jiedian1 ~]# vim /etc/hosts
201.1.1.1 jiedian1.public.hydra.cn
201.1.2.1 jiedian1.private.hydra.cn jiedian1
201.1.1.2 jiedian2.public.hydra.cn
201.1.2.2 jiedian2.private.hydra.cn jiedian2
201.1.2.3 jiedian3.private.hydra.cn jiedian3
201.1.2.254 host.private.hydra.cn host
在两台集群节点上安装ricci(在两台节点都做相同的操作)
[root@jiedian1 ~]# yum -y install ricci
[root@jiedian1 ~]# echo 'redhat' | passwd --stdin ricci(ricci是链接集群的工具,设置密码比较安全)
[root@jiedian1 ~]# /etc/init.d/ricci start;chkconfig ricci on
安装luci(随便在哪一台装都可以,最好不要安装到集群节点上)
[root@cunchu ~]# yum -y install luci
[root@cunchu ~]# /etc/init.d/luci start;chkconfig luci on
web browser to https://cunchu:8084(启动后会给一个url地址,在哪台装的主机名就是哪台,访问web页面输入ip就可以)
[root@cunchu ~]# firefox https://201.1.2.3:8084
页面出来后,输入此台服务器的root及密码
点击manage cl usters》create》
集群发生的错误
Authentication failed 身份验证错误,ricci密码有问题
ssl connection 连接错误,检查ricci服务是否运行,防火墙,selinux
安装完毕后,有些节点异常,显示红色,把cman和rgmanager设置为开机自启后reboot
安装完毕后,web页面中无任何显示,在web页面中add
在物理机配置fence,并生成配置文件后启动服务
fence-virtd fence-virtd-libvirt fence-virtd-multicast
[root@room1pc01 ~]# yum -y install fence-virtd fence-virtd-libvirt fence-virtd-multicast
[root@room1pc01 ~]# fence_virtd -c
...
Interface [none]: public2(改为public2)
Backend module [checkpoint]: libvirt(改为libvirt)
...
[root@room1pc01 ~]# mkdir /etc/cluster(创建密钥文件)
[root@room1pc01 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=4k count=1(创建密钥文件随机码)
[root@room1pc01 ~]# scp /etc/cluster/fence_xvm.key 201.1.2.1:/etc/cluster/
[root@room1pc01 ~]# scp /etc/cluster/fence_xvm.key 201.1.2.2:/etc/cluster/
[root@room1pc01 ~]# /etc/init.d/fence_virtd start; chkconfig fence_virtd on
在web页面配置
[root@cunchu ~]# firefox https://201.1.2.3:8084
点击 fence devices》add》下拉列表选择自己的fence
点击 nodes》选择主机》add fence method》创建好后点击add fence instnce
Domain这里要填全名rh6_node01
点击 failover domains

搭建高可用web集群
资源:apache,只需要安装即可 不要启动,共享存储 使用iSCSI提供的共享存储,ip地址 对外提供服务 201.1.1.100

安装apache(两台节点做相同的操作,分区格式化在单独一台做即可,它会共享出去)
[root@jiedian1 ~]# yum -y install httpd
[root@jiedian1 ~]# parted /dev/mapper/mpatha
(parted) mklabel gpt
(parted) mkpart primary ext4 1M 1024M
[root@jiedian1 ~]# partprobe(加载分区)
[root@jiedian1 ~]# mkfs.ext4 /dev/mapper/mpathap1
[root@jiedian1 ~]# mount /dev/mapper/mpathap1 /var/www/html/
[root@jiedian1 ~]# vim /var/www/html/index.html
hydra
[root@jiedian1 ~]# umount /var/www/html/(写上页面后要卸载,谁挂载由集群决定)
在web页面配置
[root@cunchu ~]# firefox https://201.1.2.3:8084
点击resources》add》apache》naem随便写,其他的都删除,最后一行写3
点击resources》add》ip addres》netmask必须写24
点击resources》add》filesystem
点击service groups》add》
firefo http://201.1.1.100/(测试验证)
——————————————————————————————————————————————————————————————————————————————————————————

linux RHCS集群 高可用web服务器的更多相关文章

  1. 集群高可用之lvs+keepalive

    集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...

  2. Rabbitmq集群高可用测试

    Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...

  3. openstack pike 集群高可用 安装 部署 目录汇总

    # openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...

  4. 浅谈MySQL集群高可用架构

    前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...

  5. bitmq集群高可用测试

    Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...

  6. Eureka 集群高可用配置.

    SERVER:1 server: port: 1111 eureka: instance: hostname: ${spring.cloud.client.ip-address} instance-i ...

  7. mysql集群高可用架构

    前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...

  8. hadoop+zookeeper集群高可用搭建

                                                                  hadoop+zookeeper集群高可用搭建 Senerity 发布于 2 ...

  9. RabbitMQ从零到集群高可用(.NetCore5.0) -高可用集群构建落地

    系列文章: RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解 RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列 ...

随机推荐

  1. TP手册学习第二天

    默认情况下,URL是不区分大小写的,访问规则:--模块/控制器/操作/参数/值,如果要访问驼峰法的控制器类BlogTest,则需要使用:blog_test MVC是一个设计模式,它强制性的使应用程序的 ...

  2. lua版本的一个状态机

    这个状态机http://www.cnblogs.com/flytrace/p/5587033.html的lua版本 -- LUA 有实现枚举值的好办法么 local sc_enum = { -- ev ...

  3. 华硕笔记本电脑Win10改Win7设置U盘启动

    华硕笔记本电脑Win10改Win7设置U盘启动 尝试开机按ESC选择前面没有UEFI项的USB启动: 1,在BIOS设置里advanced菜单,把 Lgeacy USB support选择为enabl ...

  4. [C#][Newtonsoft.Json] Newtonsoft.Json 序列化时的一些其它用法

    Newtonsoft.Json 序列化时的一些其它用法 在进行序列化时我们一般会选择使用匿名类型 new { },或者添加一个新类(包含想输出的所有字段).但不可避免的会出现以下情形:如属性值隐藏(敏 ...

  5. Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)

    性能测试计划 性能测试用例 录制脚本 性能测试结果 性能测试报告 性能测试监控报告 准备工作 从脚本已录制成功之后开始进行压测 安装Jmeter拓展插件 查看 Transactions per Sec ...

  6. [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2 神经网络表示 对于一个由输入层,隐藏层,输出层三层所组成的神经网络来说,输入层,即输入数据被称为第0层,中间层被称为第1层,输出层被称为 ...

  7. Android util.Log 工具类

    Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志. Log.v().用于打印那些最为琐碎的.意义最小的日志信息.对应级别verbos ...

  8. 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界

    欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...

  9. 细说Django的admin

    在admin.py中只需要将地Model中某个类注册,即可在Admin中进行增删查改的功能,例如: admin.site.register(models.UserInfo) 这种方式比较简单,如果想要 ...

  10. 洛谷 [P2763]试题库问题

    非常舒适的最大流 非常显然的建图方法,然而因为数组开小卡了很长时间 #include <iostream> #include <cstdio> #include <alg ...