一、环境准备

主网IP 私网IP 主机名 角色 VIP
10.203.178.125 192.168.10.2 node1 10.203.178.137,192.168.10.1
10.203.178.127 192.168.10.3 node2 -

二、安装配置dhcp

1、10.203.178.125 配置dhcp服务

a、dhcp服务软件安装

yum install -y dhcpd

b、修改配置文件

vim /etc/dhcp/dhcpd.conf

# cobbler slave dhcpd

ddns-update-style interim;

allow booting;
allow bootp; ignore client-updates;
set vendorclass = option vendor-class-identifier; option pxe-system-type code 93 = unsigned integer 16; subnet 192.168.10.0 netmask 255.255.254.0 {
option routers 192.168.10.1;
option domain-name-servers 10.202.32.100;
option subnet-mask 255.255.254.0;
range dynamic-bootp 192.168.10.10 192.168.10.199;
default-lease-time 7200;
max-lease-time 14400;
next-server 10.203.178.137;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
if option pxe-system-type = 00:02 {
filename "ia64/elilo.efi";
} else if option pxe-system-type = 00:06 {
filename "grub/grub-x86.efi";
} else if option pxe-system-type = 00:07 {
filename "grub/grub-x86_64.efi";
} else {
filename "pxelinux.0";
}
}
}

c、启动dhcpd服务:

service dhcpd restart
service dhcpd status

2、10.203.178.127 配置dhcp服务

a、安装dhcp服务

同上

b、配置dhcp服务

同上,但修改下列行到另一个c类地址段

range dynamic-bootp 192.168.11.10 192.168.11.199;

c、启动dhcpd服务:

同上

三、安装配置cobbler

yum install -y cobbler

四、安装配置keepalived

1、10.203.178.125安装keepalived服务

a、软件安装

yum install -y keepalived

b、配置keepalived

vim /etc/keepalived/scripts/keepalived.conf

global_defs {
router_id pribms.dev
}
vrrp_script chk_http1 {
script "/etc/keepalived/scripts/check_healthy.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 137
priority 100
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1qaz@WSX
}
virtual_ipaddress {
10.203.178.137
}
track_script {
chk_http1
}
master_notify /etc/keepalived/scripts/restart_cobblerd.sh
} vrrp_instance VI_2 {
state BACKUP
interface eth3
virtual_router_id 101
priority 100
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 2wsx#EDC
}
virtual_ipaddress {
192.168.10.1
}
}

c、创建 keepalived 健康检查脚本

vim /etc/keepalived/scripts/check_healthy.sh

#!/bin/bash

stop_keepalived() {
service keepalived stop
exit 1
}
nc -w 10 -z 127.0.0.1 80 || service httpd restart
nc -w 10 -z 127.0.0.1 8080 || /bin/bash /app/cloud-pri-bms/code/run_app.sh restart sleep 2
nc -w 10 -z 127.0.0.1 80 || stop_keepalived
nc -w 10 -z 127.0.0.1 8080 || stop_keepalived

d、创建 keepalived 角色切换为主之后的触发脚本

vim /etc/keepalived/scripts/restart_cobblerd.sh

#!/bin/bash
#Auther: Harry
#Date: 2019-09-12 /etc/init.d/cobblerd restart
/usr/bin/cobbler sync

e、启动keepalived并设置开机启动

# 启动服务
service keepalived start
ip a # 打开开机自启动并验证:
chkconfig keepalived on
chkconfig keepalived --list

2、10.203.178.127安装keepalived服务

a、软件安装

同上

b、配置keepalived

同上

# 修改
priority 99 # 删除
nopreempt

c、创建keepalived监控检查脚本

同上

d、创建 keepalived 角色切换为主之后的触发脚本

同上

e、启动keepalived并设置开机启动

同上

五、安装配置rsync服务:

功能:rysnc客户端可以将指定目录中的文件同步到rsync服务器端

1、10.203.178.125配置rsync服务

a、安装rsync、xinetd、inotify-tools软件

yum install -y rsync xinetd inotify-tools

b、编辑rsyncd.conf配置文件

vim /etc/cobbler/rsync.template

在前面插入下面这段

log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass
motd file = /etc/rsyncd.Motd [systems]
path = /app/cobbler/config/systems.d/
comment = systemd
uid = root
gid = root
use chroot = no
read only = no
list = no
max connections = 200
timeout = 600
auth users = appfiles_user
hosts allow = 10.203.178.127 [tftpboot]
path = /app/tftpboot/
comment = tftpboot
uid = root
gid = root
use chroot = no
read only = no
list = no
max connections = 200
timeout = 600
auth users = appfiles_user
hosts allow = 10.203.178.127

同步到/etc/rsyncd.conf配置文件中

cobbler sync

c、设置rsync同步的账号和密码

echo "appfiles_user:123456" > /etc/rsync.pass
chmod 600 /etc/rsyncd.conf
chmod 600 /etc/rsync.pass

d、配置rsync同步密码

echo 123456> /etc/keepalived/passwd.txt
chmod 600 /etc/keepalived/passwd.txt

e、设置rsync服务开机自启动

chkconfig rsync on
chkconfig rsync --list

f、配置rsync_inotify.sh脚本文件

同步路径:

src1=/app/cobbler/config/systems.d/
src2=/app/tftpboot/

vim /opt/rsync_scripts/rsync_inotify.sh

#!/bin/bash
#20150608 export PATH=$PATH:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/binsbin:/bin:/usr/sbin:/usr/bin:/root/bin src1=/app/cobbler/config/systems.d/
src2=/app/tftpboot/
des1=systems
des2=tftpboot
passwdfile=/etc/keepalived/passwd.txt
ip=10.203.178.127
logfile=/var/log/rsync_app.log if ! grep -q 8192000 /proc/sys/fs/inotify/max_user_watches ; then
echo 8192000 > /proc/sys/fs/inotify/max_user_watches
fi /usr/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' -modify,delete,create,attrib $src1 | \
while read file ; do
rsync -vzrtopg --delete --progress $src1 appfiles_user@$ip::$des1 --passworfile=$passwdfile
echo "$file was synced" >> ${logfile} 2>&1
done & /usr/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' -modify,delete,create,attrib $src2 | \
while read file ; do
rsync -vzrtopg --delete --progress $src2 appfiles_user@$ip::$des2 --passworfile=$passwdfile
echo "$file was synced" >> ${logfile} 2>&1
done & sleep 2
date '+%Y-%m-%d %H:%M:%S' >> /var/log/rync_date.log wait

2、10.203.178.127配置rsync服务

a、安装rsync、xinetd、inotify-tools软件

同上

b、编辑rsyncd.conf配置文件

vim /etc/cobbler/rsync.template

同上

# 修改
hosts allow = 10.203.178.125

同步到/etc/rsyncd.conf配置文件中

同上

c、设置rsync同步的账号和密码

同上

d、配置rsync同步密码

同上

e、重启xinetd服务并设置rsync服务开机自启动

chkconfig rsync on
chkconfig rsync --list
service xinetd restart

f、配置rsync_inotify.sh脚本文件

同上

#修改
ip=10.203.178.125

六、故障恢复:

1、场景简介

正常情况下,10.203.178.125作为主节点提供服务

10.203.178.127作为备节点

主节点上的数据实时同步到备节点

2、主节点10.203.178.125宕机的情况

a、恢复10.203.178.125服务

检查httpd服务
service httpd status
service httpd start 检查cobbler服务
service cobblerd status
service cobblerd start 检查api服务
telnet 127.0.0.1 8080
/bin/bash /app/cloud-pri-bms/code/run_app.sh start

b、同步10.203.178.127数据到10.203.178.125

10.203.178.125检查并启动xinetd服务

/etc/init.d/xinetd status
/etc/init.d/xinetd start #未启动则手动启动服务

10.203.178.127执行同步脚本并创建文件

nohup sh /opt/rsync_scripts/rsync_inotify.sh >>/app/clog/rsync.log 2>&1 &
touch /app/cobbler/config/systems.d/1111.txt
touch /app/tftpboot/2222.txt

10.203.178.125上验证是否同步:

ll /app/cobbler/config/systems.d/
ll /app/tftpboot/

10.203.178.127上删掉刚才创建的文件

rm /app/cobbler/config/systems.d/1111.txt
rm /app/tftpboot/2222.txt

c、启动10.203.178.125高可用服务

检查keepalived服务并启动
service keepalived status
service keepalived start

3、备节点10.203.178.127宕机的情况

a、恢复10.203.178.127服务

检查httpd服务
service httpd status
service httpd start 检查cobbler服务
service cobblerd status
service cobblerd start 检查api服务
telnet 127.0.0.1 8080
/bin/bash /app/cloud-pri-bms/code/run_app.sh start

b、同步10.203.178.125数据到10.203.178.127

10.203.178.127检查并启动xinetd服务

service xinetd status
service xinetd start

10.203.178.125执行同步脚本并创建文件

touch /app/cobbler/config/systems.d/1111.txt
touch /app/tftpboot/2222.txt

10.203.178.127上验证是否同步

ll /app/cobbler/config/systems.d/
ll /app/tftpboot/

10.203.178.125上删掉刚才创建的文件

rm /app/cobbler/config/systems.d/1111.txt
rm /app/tftpboot/2222.txt

10.203.178.127重启cobbler服务并同步

service cobblerd restart
cobbler sync

c、启动10.203.178.127高可用服务

检查keepalived服务并启动
service keepalived status
service keepalived start

cobbler高可用方案的更多相关文章

  1. MySQL高可用方案

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  2. [转]MYSQL高可用方案探究(总结)

    前言 http://blog.chinaunix.net/uid-20639775-id-3337432.htmlLvs+Keepalived+Mysql单点写入主主同步高可用方案 http://bl ...

  3. Sentinel-Redis高可用方案(一):主从复制

    引言 大概是因为Redis是个人开发的产品,所以Redis的高可用方案是被分成了几块来实现:主从复制.主从切换以及虚拟IP或客户端方案. 从Redis 2.8开始加入对Sentinel机制从而实现了服 ...

  4. Redis之高可用方案

    Redis之高可用方案   Redis以其高效的访问速度著称.但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有 ...

  5. mysql高可用方案总结性说明

    MySQL的各种高可用方案,大多是基于以下几种基础来部署的(也可参考:Mysql优化系列(0)--总结性梳理   该文后面有提到)1)基于主从复制:2)基于Galera协议(PXC):3)基于NDB引 ...

  6. 大型网站系统架构实践(五)深入探讨web应用高可用方案

    从上篇文章到这篇文章,中间用了一段时间准备,主要是想把东西讲透,同时希望大家给与一些批评和建议,这样我才能有所进步,也希望喜欢我文章的朋友,给个赞,这样我才能更有激情,呵呵. 由于本篇要写的内容有点多 ...

  7. [转载] MySQL高可用方案选型参考

    原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...

  8. 分布式数据存储 - MySQL主从复制高可用方案

    前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...

  9. (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...

随机推荐

  1. JavaScript 数组、字符串、Map、Set 方法整理

    在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...

  2. 面试java_后端面经_5

    情话部分: 小姐姐:为什么有很多人在感情中付出很多,却得不到想要的结果? 你答:我听过一个这样的故事:讲的是蚯蚓一家人,有一天,蚯蚓爸爸特别无聊,就把自己切成了俩段愉快的打羽毛球去了,蚯蚓妈妈见状,把 ...

  3. EventEmitter的前端实现

    EventEmitter简介 EventEmitter是Node.js的内置模块events提供的一个类,它是Node事件流的核心,EventEmitter是服务端的东西, 前端已经有event-em ...

  4. Reactive 漫谈

    目录 概念 面向流设计 异步化 响应式宣言 参考文档 概念 Reactive Programming(响应式编程)已经不是一个新东西了. 关于 Reactive 其实是一个泛化的概念,由于很抽象,一些 ...

  5. 40 篇原创干货,带你进入 Spring Boot 殿堂!

    两个月前,松哥总结过一次已经完成的 Spring Boot 教程,当时感受到了小伙伴们巨大的热情. 两个月过去了,松哥的 Spring Boot 教程又更新了不少,为了方便小伙伴们查找,这里再给大家做 ...

  6. jmeter+ant生成xml报告

    1.jdk安装 2.jmter安装 3.ant安装 下载apache-ant-1.10.6-bin.zip,直接解压就可使用,和jmeter类似 ant环境变量配置 新建系统变量:ANT_HOME,变 ...

  7. MySQL多表关联数据同时删除

    MySQL多表关联时的多表删除: DELETE t1, t2FROM    t1LEFT JOIN t2 ON t1.id = t2.idWHERE    t1.id = 25

  8. spring全家桶的pom的基本配置

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  9. 更新!ArcMap和ArcGIS Pro加载百度影像地图

    上一篇文章写了ArcMap和ArcGIS Pro中加载百度地图 的方法 一次没有把百度影像加载的功能开发出来,趁这几天有空整理了下 加载方法按照上次那篇文章操作. 百度影像wmts加载地址:http: ...

  10. 关于post和get的区别

    首先,get和post并没有本质上的区别,都只是 HTTP 协议中两种请求方式,用的都是同一个传输层协议,在传输上并没有什么不同.     1.get和post报文上的区别 GET 和 POST 只是 ...