cobbler高可用方案
一、环境准备
主网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高可用方案的更多相关文章
- MySQL高可用方案
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...
- [转]MYSQL高可用方案探究(总结)
前言 http://blog.chinaunix.net/uid-20639775-id-3337432.htmlLvs+Keepalived+Mysql单点写入主主同步高可用方案 http://bl ...
- Sentinel-Redis高可用方案(一):主从复制
引言 大概是因为Redis是个人开发的产品,所以Redis的高可用方案是被分成了几块来实现:主从复制.主从切换以及虚拟IP或客户端方案. 从Redis 2.8开始加入对Sentinel机制从而实现了服 ...
- Redis之高可用方案
Redis之高可用方案 Redis以其高效的访问速度著称.但由于官方还未发布redis-cluster,而redis的replica又有诸多不便:比如一组master-slave的机器,如果之间有 ...
- mysql高可用方案总结性说明
MySQL的各种高可用方案,大多是基于以下几种基础来部署的(也可参考:Mysql优化系列(0)--总结性梳理 该文后面有提到)1)基于主从复制:2)基于Galera协议(PXC):3)基于NDB引 ...
- 大型网站系统架构实践(五)深入探讨web应用高可用方案
从上篇文章到这篇文章,中间用了一段时间准备,主要是想把东西讲透,同时希望大家给与一些批评和建议,这样我才能有所进步,也希望喜欢我文章的朋友,给个赞,这样我才能更有激情,呵呵. 由于本篇要写的内容有点多 ...
- [转载] MySQL高可用方案选型参考
原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...
- 分布式数据存储 - MySQL主从复制高可用方案
前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可 ...
- (转)基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedi ...
随机推荐
- Spring 集成Kafka(完整版)
前面的文章我们已经完成了Kafka基于Zookeeper的集群的搭建了.Kafka集群搭建请点我.记过几天的研究已经实现Spring的集成了.本文重点 jar包准备 集成是基于spring-integ ...
- Python 学习笔记(6)— 字符串格式化
字符串格式化处理 远古写法 以前通常使用运算符号 % ,%s 插入的值 String 类型,%.3f 指插入的值为包含 3 位小数的浮点数: format1 = "%s, %s!" ...
- 从原理层面掌握@ModelAttribute的使用(使用篇)【一起学Spring MVC】
每篇一句 每个人都应该想清楚这个问题:你是祖师爷赏饭吃的,还是靠老天爷赏饭吃的 前言 上篇文章 描绘了@ModelAttribute的核心原理,这篇聚焦在场景使用上,演示@ModelAttribute ...
- 求平方根算法 Heron’s algorithm
求平方根问题 概述:本文介绍一个古老但是高效的求平方根的算法及其python实现,分析它为什么可以快速求解,并说明它为何就是牛顿迭代法的特例. 问题:求一个正实数的平方根. 给定正实数 \(m\),如 ...
- [Flowable] - 工作流是什么?BPM是什么?
工作流管理系统基本概念 近两年随着电子商务环境不断演进(例如阿里巴巴的B2B电子商务平台),从原来支持企业内部单系统的业务流程.到企业内部应用.服务的集成,再进一步向企业与合作伙伴之间业务交互,工作流 ...
- copy好文“IT34岁危机破解心法”
在博客园中偶然发现一个好文,收藏并记录以下.在工作中更多的从企业单位用人角度去思考,或许能在职场及职业规划中更加的游刃有余,有的放矢.下面是原文. 本文题目虽是“IT人34岁危机”破解心法,但内容同样 ...
- 三行脚本让 asp.net core 附加进程调试不再头痛
在将项目升级到 asp.net core 2.2 后,很少使用 IIS Express 运行项目了,基本都是控制台运行或者写个脚本批量启动要运行的接口(多个输出项目),一直以为是我机器的 bug 关于 ...
- CocosCreator上的游戏(调试)发布到微信小程序
1.下载CocosCreator,微信开发者工具 官网地址:http://www.cocos.com/download 官网下载:https://developers.weixin.qq.com/mi ...
- JNI开发流程
交叉编译 在一个平台上去编译另一个平台上可以执行的本地代码 cpu平台 arm x86 mips 操作系统平台 windows linux mac os 原理 模拟不同平台的特性去编译代码 jni开发 ...
- 10_switch语句的使用
/* switch 语句和c语言的用法不同 1.go语句是默认添加break语句的,但c不是默认的 2.go语句添加一个fallthrough语句,可以顺序执行接下来的结构 3.switch在关键词后 ...