一、环境准备

主网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

  1. # cobbler slave dhcpd
  2. ddns-update-style interim;
  3. allow booting;
  4. allow bootp;
  5. ignore client-updates;
  6. set vendorclass = option vendor-class-identifier;
  7. option pxe-system-type code 93 = unsigned integer 16;
  8. subnet 192.168.10.0 netmask 255.255.254.0 {
  9. option routers 192.168.10.1;
  10. option domain-name-servers 10.202.32.100;
  11. option subnet-mask 255.255.254.0;
  12. range dynamic-bootp 192.168.10.10 192.168.10.199;
  13. default-lease-time 7200;
  14. max-lease-time 14400;
  15. next-server 10.203.178.137;
  16. class "pxeclients" {
  17. match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
  18. if option pxe-system-type = 00:02 {
  19. filename "ia64/elilo.efi";
  20. } else if option pxe-system-type = 00:06 {
  21. filename "grub/grub-x86.efi";
  22. } else if option pxe-system-type = 00:07 {
  23. filename "grub/grub-x86_64.efi";
  24. } else {
  25. filename "pxelinux.0";
  26. }
  27. }
  28. }

c、启动dhcpd服务:

  1. service dhcpd restart
  2. 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、软件安装

  1. yum install -y keepalived

b、配置keepalived

vim /etc/keepalived/scripts/keepalived.conf

  1. global_defs {
  2. router_id pribms.dev
  3. }
  4. vrrp_script chk_http1 {
  5. script "/etc/keepalived/scripts/check_healthy.sh"
  6. interval 2
  7. }
  8. vrrp_instance VI_1 {
  9. state BACKUP
  10. interface eth0
  11. virtual_router_id 137
  12. priority 100
  13. nopreempt
  14. advert_int 1
  15. authentication {
  16. auth_type PASS
  17. auth_pass 1qaz@WSX
  18. }
  19. virtual_ipaddress {
  20. 10.203.178.137
  21. }
  22. track_script {
  23. chk_http1
  24. }
  25. master_notify /etc/keepalived/scripts/restart_cobblerd.sh
  26. }
  27. vrrp_instance VI_2 {
  28. state BACKUP
  29. interface eth3
  30. virtual_router_id 101
  31. priority 100
  32. nopreempt
  33. advert_int 1
  34. authentication {
  35. auth_type PASS
  36. auth_pass 2wsx#EDC
  37. }
  38. virtual_ipaddress {
  39. 192.168.10.1
  40. }
  41. }

c、创建 keepalived 健康检查脚本

vim /etc/keepalived/scripts/check_healthy.sh

  1. #!/bin/bash
  2. stop_keepalived() {
  3. service keepalived stop
  4. exit 1
  5. }
  6. nc -w 10 -z 127.0.0.1 80 || service httpd restart
  7. nc -w 10 -z 127.0.0.1 8080 || /bin/bash /app/cloud-pri-bms/code/run_app.sh restart
  8. sleep 2
  9. nc -w 10 -z 127.0.0.1 80 || stop_keepalived
  10. nc -w 10 -z 127.0.0.1 8080 || stop_keepalived

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

vim /etc/keepalived/scripts/restart_cobblerd.sh

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

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

  1. # 启动服务
  2. service keepalived start
  3. ip a
  4. # 打开开机自启动并验证:
  5. chkconfig keepalived on
  6. chkconfig keepalived --list

2、10.203.178.127安装keepalived服务

a、软件安装

同上

b、配置keepalived

同上

  1. # 修改
  2. priority 99
  3. # 删除
  4. 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

在前面插入下面这段

  1. log file = /var/log/rsyncd.log
  2. pidfile = /var/run/rsyncd.pid
  3. lock file = /var/run/rsync.lock
  4. secrets file = /etc/rsync.pass
  5. motd file = /etc/rsyncd.Motd
  6. [systems]
  7. path = /app/cobbler/config/systems.d/
  8. comment = systemd
  9. uid = root
  10. gid = root
  11. use chroot = no
  12. read only = no
  13. list = no
  14. max connections = 200
  15. timeout = 600
  16. auth users = appfiles_user
  17. hosts allow = 10.203.178.127
  18. [tftpboot]
  19. path = /app/tftpboot/
  20. comment = tftpboot
  21. uid = root
  22. gid = root
  23. use chroot = no
  24. read only = no
  25. list = no
  26. max connections = 200
  27. timeout = 600
  28. auth users = appfiles_user
  29. hosts allow = 10.203.178.127

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

cobbler sync

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

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

d、配置rsync同步密码

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

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

  1. chkconfig rsync on
  2. chkconfig rsync --list

f、配置rsync_inotify.sh脚本文件

同步路径:

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

vim /opt/rsync_scripts/rsync_inotify.sh

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

2、10.203.178.127配置rsync服务

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

同上

b、编辑rsyncd.conf配置文件

vim /etc/cobbler/rsync.template

同上

  1. # 修改
  2. hosts allow = 10.203.178.125

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

同上

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

同上

d、配置rsync同步密码

同上

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

  1. chkconfig rsync on
  2. chkconfig rsync --list
  3. service xinetd restart

f、配置rsync_inotify.sh脚本文件

同上

  1. #修改
  2. ip=10.203.178.125

六、故障恢复:

1、场景简介

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

10.203.178.127作为备节点

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

2、主节点10.203.178.125宕机的情况

a、恢复10.203.178.125服务

  1. 检查httpd服务
  2. service httpd status
  3. service httpd start
  4. 检查cobbler服务
  5. service cobblerd status
  6. service cobblerd start
  7. 检查api服务
  8. telnet 127.0.0.1 8080
  9. /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服务

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

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

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

10.203.178.125上验证是否同步:

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

10.203.178.127上删掉刚才创建的文件

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

c、启动10.203.178.125高可用服务

  1. 检查keepalived服务并启动
  2. service keepalived status
  3. service keepalived start

3、备节点10.203.178.127宕机的情况

a、恢复10.203.178.127服务

  1. 检查httpd服务
  2. service httpd status
  3. service httpd start
  4. 检查cobbler服务
  5. service cobblerd status
  6. service cobblerd start
  7. 检查api服务
  8. telnet 127.0.0.1 8080
  9. /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服务

  1. service xinetd status
  2. service xinetd start

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

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

10.203.178.127上验证是否同步

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

10.203.178.125上删掉刚才创建的文件

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

10.203.178.127重启cobbler服务并同步

  1. service cobblerd restart
  2. cobbler sync

c、启动10.203.178.127高可用服务

  1. 检查keepalived服务并启动
  2. service keepalived status
  3. 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. Spring 集成Kafka(完整版)

    前面的文章我们已经完成了Kafka基于Zookeeper的集群的搭建了.Kafka集群搭建请点我.记过几天的研究已经实现Spring的集成了.本文重点 jar包准备 集成是基于spring-integ ...

  2. Python 学习笔记(6)— 字符串格式化

    字符串格式化处理 远古写法 以前通常使用运算符号 % ,%s 插入的值 String 类型,%.3f 指插入的值为包含 3 位小数的浮点数: format1 = "%s, %s!" ...

  3. 从原理层面掌握@ModelAttribute的使用(使用篇)【一起学Spring MVC】

    每篇一句 每个人都应该想清楚这个问题:你是祖师爷赏饭吃的,还是靠老天爷赏饭吃的 前言 上篇文章 描绘了@ModelAttribute的核心原理,这篇聚焦在场景使用上,演示@ModelAttribute ...

  4. 求平方根算法 Heron’s algorithm

    求平方根问题 概述:本文介绍一个古老但是高效的求平方根的算法及其python实现,分析它为什么可以快速求解,并说明它为何就是牛顿迭代法的特例. 问题:求一个正实数的平方根. 给定正实数 \(m\),如 ...

  5. [Flowable] - 工作流是什么?BPM是什么?

    工作流管理系统基本概念 近两年随着电子商务环境不断演进(例如阿里巴巴的B2B电子商务平台),从原来支持企业内部单系统的业务流程.到企业内部应用.服务的集成,再进一步向企业与合作伙伴之间业务交互,工作流 ...

  6. copy好文“IT34岁危机破解心法”

    在博客园中偶然发现一个好文,收藏并记录以下.在工作中更多的从企业单位用人角度去思考,或许能在职场及职业规划中更加的游刃有余,有的放矢.下面是原文. 本文题目虽是“IT人34岁危机”破解心法,但内容同样 ...

  7. 三行脚本让 asp.net core 附加进程调试不再头痛

    在将项目升级到 asp.net core 2.2 后,很少使用 IIS Express 运行项目了,基本都是控制台运行或者写个脚本批量启动要运行的接口(多个输出项目),一直以为是我机器的 bug 关于 ...

  8. CocosCreator上的游戏(调试)发布到微信小程序

    1.下载CocosCreator,微信开发者工具 官网地址:http://www.cocos.com/download 官网下载:https://developers.weixin.qq.com/mi ...

  9. JNI开发流程

    交叉编译 在一个平台上去编译另一个平台上可以执行的本地代码 cpu平台 arm x86 mips 操作系统平台 windows linux mac os 原理 模拟不同平台的特性去编译代码 jni开发 ...

  10. 10_switch语句的使用

    /* switch 语句和c语言的用法不同 1.go语句是默认添加break语句的,但c不是默认的 2.go语句添加一个fallthrough语句,可以顺序执行接下来的结构 3.switch在关键词后 ...