手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Ansible+Corosync+Pacemaker+NFS实现http高可用

[日期:2016-04-30] 来源:Linux社区  作者:windchasereric [字体: ]

目录:

(一)实验环境
(二)准备工作
(三)为node1和node2配置基础配置
(四)使用ansible部署nfs
(五)使用ansible部署corosync和pacemaker
(六)使用ansible安装crmsh工具
(七)使用crmsh配置http高可用
(八)验证
(九)需要注意的地方

(一)实验环境
1.1、环境拓扑

使用 Ansible 高效交付 Docker 容器  http://www.linuxidc.com/Linux/2015-10/124233.htm

使用Ansible批量管理远程服务器  http://www.linuxidc.com/Linux/2015-05/118080.htm

Ansible安装配置与简单使用  http://www.linuxidc.com/Linux/2015-07/120399.htm

CentOS 7 中安装并使用自动化工具 Ansible  http://www.linuxidc.com/Linux/2015-10/123801.htm

Ansible和Docker的作用和用法  http://www.linuxidc.com/Linux/2014-11/109783.htm

Ansible批量搭建LAMP环境 http://www.linuxidc.com/Linux/2014-10/108264.htm

1.2、所需系统
4台安装了CentOS6.5虚拟机

1.3、网络、主机及其他准备工作
主机IP地址和主机名

关闭主机防火墙及Selinux
1.4、各主机用途说明
node1和node2:安装corosync+pacemaker实现httpd的高可用

ansible-server:安装ansible,实现基础层面的自动部署、安装、配置

nfs-server:安装了nfs,实现磁盘共享

(二)准备工作
2.1、ansible-server安装ansible
1)、配置epel源

[epel]
name=epel
mirrorlist=http://mirrors.Fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch
enabled=1
gpgcheck=0
备注:因为ansible所需的程序包在epel源有提供

2)、安装ansible

[root@ansible-server ~]# yum -y install ansible
2.2、创建ansble-playbook所需使用到的目录
[root@ansible-server ~]# mkdir -pv corosync/roles/{common,ha,crmsh,nfs}/{files,tasks,handlers,templates,vars,meta,default}
各目录简要说明

common:用于一些基本的软件安装及配置,包括ntp时间同步,local源,挂载光盘等等

ha:用于安装corosync、httpd、pacemaker程序包,及配置corosync认证和配置文件等

crmsh:用于安装crmsh、pssh程序包

nfs:用于安装nfs、及启动nfs服务等
2.3、创建site.yml和ha.yml文件
[root@ansible-server ~]# touch corosync/ha.yml
[root@ansible-server ~]# touch corosync/site.yml 
备注:此文件虽可不配置,但此文件必须存在

2.4、配置ansible下的hosts文件
[root@ansible-server ~]# vim /etc/ansible/hosts
[hbhosts]  #node1和node2的组
192.168.80.153
192.168.80.152
[nfs-Server]  #nfs-server组
192.168.80.168
2.5 、使用秘钥让两台主机互相通信
[root@ansible-server ~]# ssh-keygen -t rsa -P ''    #生成密钥串
[root@ansible-server ~]# ansible hbhosts -m copy -a 'src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys owner=root group=root mode=600' –k  #将秘钥串通过ansible拷贝到各节点中

(三)为node1和node2配置基础配置
3.1、目标
挂载本地磁盘
备注:之后请在各节点上配置/etc/fstab,让其自动挂载。

将所有的yum源移除

配置本地yum源,并将其拷贝到各节点中

安装ntpdate和crontab,并使用计划任务设置时间同步

拷贝本地解析文件到各节点中的/etc/hosts中,让node1和node2可通过名称解析

备注:以下操作均在ansible-server上操作
3.2、 配置hosts文件,用于节点间互相通信
[root@ansible-server ~]# vim corosync/roles/common/files/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.152  node1.windchaser.com node1
192.168.80.153  node2.windchaser.com node2
用于实现node1和node2主机互相通信

3.3、设置本地光盘yum源
[root@ansible-server ~]# vim corosync/roles/common/files/local.repo
[local]
name=local repo
baseurl=file:///mnt
enabled=1
gpgcheck=0
3.4、定义common的tasks
目标:

自动挂载光驱

移除所有默认yum源,拷贝local.repo源至对应的目录

使用计划任务设置时间自动同步
[root@ansible-server ~]# vim corosync/roles/common/tasks/main.yml
- name: mount media        #自动挂载光盘
  mount: name=/mnt src=/dev/sr0 fstype=iso9660 opts=ro state=mounted
- name: mkdir /tmp/repo
  shell: mkdir /tmp/repo
  args:
    creates: /tmp/repo
- name: move *repo to /tmp
  shell: mv /etc/yum.repos.d/* /tmp/repo
- name: copy local.repo to yum
  copy: src=local.repo dest=/etc/yum.repos.d/local.repo
- name: yum ntpdate and crontab    #安装ntpdate 和 crontab
  yum: name={{ item }}  state=present
  with_items:
    - ntp
    - cronie
  tags: inst ntp
- name: hosts file
  copy: src=hosts dest=/etc/hosts
- name: sync time    #设置时间自动同步
  cron: name="sync time" minute="*/3" job="/usr/sbin/ntpdate ntp.api.bz &> /dev/null"
3.5、定义YAML
[root@ansible-server ~]# vim corosync/ha.yml
- name: install and config corosync
  remote_user: root
  hosts: hbhosts
  roles:
    - common
3.6、执行ansible-play自动部署基础配置
[root@ansible-server ~]# ansible-playbook corosync/ha.yml
此时会自动部署先前我们所做的操作,如果全部都是OK状态,表示为正常,如果出现错误,请检查对应的配置项是否出错。

(四)使用ansible部署nfs
4.1、设定nfs-server共享目录
[root@ansible-server ~]# vim corosync/roles/nfs/files/exports
/web/htdocs  192.168.80.0/24(rw)
4.2、创建http默认访问文件index.html,为后面做测试使用
[root@ansible-server ~]# vim corosync/roles/nfs/files/index.html
<h1>nfs-storage</h1>
4.3、定义nfs的tasks
[root@ansible-server ~]# vim corosync/roles/nfs/tasks/main.yml
- name: install nfs
  yum: name=nfs-utils state=present
- name: copy exports 
  copy: src=exports dest=/etc/exports
- shell: mkdir /web/htdocs -pv
  args:
    creates: /web/htdocs
- name: copy index.html
  copy: src=index.html dest=/web/htdocs
- service: name=nfs state=started enabled=yes
  tags: start
4.4、定义YAML
[root@ansible-server ~]# vim corosync/ha.yml
- name: install and config corosync
  remote_user: root
  hosts: hbhosts
  roles:
    - common
- name: install nfs        #新增下面这些项,目的是不会影响node1和node2
  remote_user: root
  hosts: nfs-Server
  roles:
    - nfs
4.5、执行ansible-play自动部署nfs设置
[root@ansible-server ~]# ansible-playbook corosync/ha.yml

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2016-04/130844p2.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款