2015年8月16日星期日

Corosync+Pacemaker+DRBDMariaDB

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
Corosync+Pacemaker+DRBDMariaDB  阅读原文»

Corosync+Pacemaker+DRBD实现MariaDB的高可用集群

Corosync简介

Corosync是高可用集群中基础事务层 (Messaging Layer)的一个实现方案与heartbeat的功能类似,主要用来传递集群的事务信息,但是Corosync的功能更加强大,正在逐渐地取代heartbeat。Corosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。

Pacemaker简介

Pacemaker是一个集群资源管理器,从heartbeat v3版本中分裂出来,功能强大。它利用集群事务层提供的组件对各节点进行资源管理及监控并从节点或资源级别的故障中恢复,以实现群集服务的最大可用性。

DRBD

使用DRBD实现对MariaDB数据存放目录的备份和高可用。关于DRBD的具体应用,可参考前面的博客。

实现过程

实验环境:

192.168.1.102 时间服务器

192.168.1.126 node1

192.168.1.127 node2

node1和node2为集群的两个节点,在这两个节点上部署Corosync、Pacemaker及MariaDB,利用DRBD在这两个节点上创建两个对等的存储设备,用来存放MariaDB数据库的数据文件以实现故障时的切换。

配置集群的必要前提:

1)各节点时间同步

2)节点之间能够基于主机名相互访问

为了方便也可以在各节点之间实现SSH基于秘钥的通信。

利用ansible批量部署Corosync和Pacemaker

以下是role的目录结构:

  [root@www roles]# tree  .  ├── common  │   ├── files  │   │   ├── hosts  │   │   └── ntp.conf  │   └── tasks  │       └── main.yml  ├── crmsh  │   ├── files  │   │   └── crmsh-2.1-1.6.x86_64.rpm  │   └── tasks  │       └── main.yml  └── ha      ├── files      │   ├── authkey      │   └── corosync.conf      ├── handlers      │   └── main.yml      └── tasks          └── main.yml  

common

  [root@www roles]# vim common/tasks/main.yml  - name: hosts file    copy: src=hosts dest=/etc/hosts  - name: sync time    copy: src=ntp.conf dest=/etc/ntp.conf  - name: start ntpd    service: name=ntpd state=started enabled=no  #############################################  [root@www roles]# vim common/files/ntp.conf  ................  server 192.168.1.102  ................  #############################################  [root@www roles]# vim common/files/hosts  ................  192.168.1.126 node1.xiaoxiao.com node1  192.168.1.127 node2.xiaoxiao.com node2  

common角色的作用就是将已经配置好的ntp服务配置文件及hosts文件发送至各节点,并启动ntp服务。实现集群的两个必要前提。

crmsh

crmsh角色用于将crmsh-2.1-1.6.x86_64.rpm安装包复制到各节点,并使用yum安装(yum install crmsh-2.1-1.6.x86_64.rpm)自动解决依赖关系。这个包由http://download.opensuse.org/repositories/network:/ha-clustering:源提供,并且这个包依赖pssh,需要添加epel源。

crmsh是一个用户层的工具,用于配置集群资源。crmsh由SUSE提供。对应的工具还有pcs,这个由红帽提供,也是专用于corosync+pacemaker的资源配置工具。

ha

ha角色用于安装Corosync和Pacemaker,并为之添加配置文件,秘钥文件及启动服务。Corosync和Pacemaker安装包base源有提供可以直接安装。

Corosync的配置文件/etc/corosync/corosync.conf

  compatibility: whitetank  totem {          version: 2                #版本          secauth: on               #是否基于安全认证的方式验证每一个节点          threads: 0                #启动的线程数(取决于cpu的核心),0表示不启用线程机制          interface {                  ringnumber: 0                  bindnetaddr: 192.168.1.0    #绑定在哪个网络地址上                  mcastaddr: 230.230.3.3      #多播地址                  mcastport: 5405             #用于传递多播信息的端口                  ttl: 1          }  }  logging {          fileline: off          to_stderr: no          to_logfile: yes          to_stderr: no          to_logfile: yes                    #由程序自己记录日志          logfile: /var/log/cluster/corosync.log #日志路径          to_syslog: no                      #日志是否由rsyslog记录          debug: off          timestamp: on                      #每一条日志打上时间戳          logger_subsys {                  subsys: AMF                  debug: off          }  }  amk {          mode: disabled  }  service {                   #以插件化的方式调用pacemaker          ver:    1           #版本号          name:   pacemaker  }  aisexec {                   #以哪个用户和组的身份来运行          user: root          group: root  }  

wKiom1XMAibwNr7gAAHFZ_gEG2k772.jpg

以上是官方文档对service中ver配置为1时的解释,这时,pacemaker服务需要单独启动。先启动Corosync再启动Pacemaker。

Corosync在各节点之间传递信息时要依赖秘钥文件,通过corosync-keygen命令生成这个秘钥文件。完成之后它会自动存放在/etc/corosync/目录下,并且权限为0400。

  [root@node1 ~]# corosync-keygen  Corosync Cluster Engine Authentication key generator.  Gathering 1024 bits for key from /dev/random.  Press keys on your keyboard to generate entropy.  Press keys on your keyboard to generate entropy (bits = 768).  

在生成秘钥文件过程中需要不断敲键盘才能完成执行过程,简单起见,可以使用/dev/urandom代替/dev/random。

  [root@node1 ~]# mv /dev/random /dev/random.bak  [root@node1 ~]# mv /dev/urandom /dev/random  

用完之后不要忘了改回来!!!

这里使用ansible部署,将已经配置好的主配置文件corosync.conf和秘钥文件authkey放在ha角色的files目录下。playbook如下:

  [root@www roles]# vim ha/tasks/main.yml  - name: install corosync and pacemaker    yum: name={{ item }} state=present    with_items:     - corosync     - pacemaker    tags: inst  - name: copy keyFile    copy: src=authkey dest=/etc/corosync/authkey owner=root group=root mode=0400    tags: authkey  - name: copy configute file    copy: src=corosync.conf dest=/etc/corosync/corosync.conf    tags: conf  - name: start corosync    service: name=corosync state=started enabled=no    tags: startCorosync  - name: start pacemaker    service: name=pacemaker state=started enabled=no    tags: startPacemaker  

若要重启服务,需要先stop pacemaker,再stop corosync,然后再进行重启。配置ha.yml,并执行。

  [root@www corosync]# vim ha.yml  - name: install corosync and crmsh    remote_user: root    hosts: web    roles:    - common    - ha    - crmsh  #########################################  [root@www corosync]# ansible-playbook ha.yml  ......  

使用drbd创建设备

配置global_common.conf文件及drbd资源文件(在各节点上),资源文件如下(drbd的具体应用在前面的博客):

  [root@node1 ~]# vim /etc/drbd.d/dbdata.res  resource dbdata {   on node1.xiaoxiao.com {          device /dev/drbd0;          disk /dev/sdb1;          address 192.168.1.126:7789;          meta-disk internal;   }   on node2.xiaoxiao.com {          device /dev/drbd0;          disk /dev/sdb1;          address 192.168.1.127:7789;          meta-disk internal;   }  }  

在各节点上创建设备,启动服务并完成挂载。

  ############在控制节点上##################  [root@www ~]# ansible web -m shell -a 'drbdadm create-md dbdata'  [root@www ~]# ansible web -m shell -a 'service drbd start'  ############node1上###########
¤újumpserver  阅读原文»

堡垒机jumpserver集群部署

本文参考老广开发二次开发后的堡垒机部署方案,在此基础上进行集群部署,提高其可靠性。尽管国外已经有类似的功能的堡垒机的发布,但是还是要感谢老广在百忙之中再次开发出精简功能,更加使用的jumpserver堡垒机。

本文内容虽然亲测,但难免仍有错误指出。各位同行发现有请帮忙反馈,以便及时改进。

堡垒机jumpserver集群部署手册... 1

目录... 2

部分一 堡垒机架构原理... 3

jumpserver基本架构... 3

jumpserver集群架构... 4

部分二部署... 5

部署概述... 5

平台环境:... 5

LDAP realserver部署... 6

1. 安装openldap软件... 6

2. 配置openldap. 6

MySQL realserver部署... 9

1. 安装mysql服务端软件... 9

2. 配置mysql主主同步... 9

jumpserver主程序部署... 12

1. 环境准备... 12

2. 安装主程序... 12

3. Nginx+uwsgi+django部署... 13

4. glusterfs部署... 20

keepalived部署... 22

1. 安装软件... 22

2. lvs主服务器上修改主配置文件... 22

3. 备用服务器(LVS_备)文件配置... 25

4. 配置realserver lvs脚本... 25

5. 设置开机启动脚步... 27

部分三测试... 28

1. 后台服务切换测试... 28

2. 调度器主备切换... 28

部分四管理... 29

新建用户注意事项... 29

部分五排错... 30

1. 登录前端管理页面报错... 30

2. ldapadd导入框架是提示错误... 30

部分一 堡垒机架构原理

jumpserver基本架构

jumpserver程序主要通过python语言编写。通过jumpserver前端页面可以简洁、直观的查看管理主机和用户。

jumpserver主要调用的服务和默认端口:

http80

ldap389

mysql

ssh22

wKioL1XK74SCNl8iAAJG8CZZcGE673.jpg

jumpserver集群架构

通过jumpserver集群实现ldap,数据库,httpssh服务器的高可用性。

架构中的服务及对应的软件:

ldapopenldap

DBmysql

sshopenssh

httpnginx

lvskeepalivedipvsadm

wKioL1XK73OAsZHFAAFF7RXiB4g837.jpg

部署主要分为四个部分:

  • LDAP realserver部署

通过使用openldap镜像模式,实现两台ldap服务器之间的数据一致性

  • mysql realserver部署

通过使用mysql主主同步模式,实现两台数据库之间的数据一致性

  • jumpsrver 部署

该部分,主要部署jumpserver主程序,并通过nginx+uwsgi+django实现前端应用和ldap多线程

  • 调度服务器部署

通过keepalived+ipvsadm搭建主备模式,实现DR的高可用

系统:centOS 6.6-64bit

数据库:MySql 5.1.73

阅读更多内容

没有评论:

发表评论