跳至主要内容

Heartbeat+DRBD+mysql部署

一环境

master
系统:centos6.5
IP地址:192.168.3.3
单独10G硬盘一块:/dev/sdb
slave
系统:centos6.5
IP地址:192.168.3.5
单独10G硬盘一块:/dev/sdb
vip
IP地址:192.168.3.7
DRBD下载地址:http://oss.linbit.com/drbd/
 
 

1配置hostname

master
设置hostname为:drbd_m_server
添加本地域名解析
slave
设置hostname为:drbd_s_server
添加本地域名解析

2时间校对

masterslave都需要
ntpdate time.nist.gov
加入开机启动项
echo “ntpdate time.nist.gov” >> /etc/rc.d/rc.local
重启masterslave服务器

3硬盘分区

fdisk /dev/sdb
fdisk -l
格式化
mkfs.ext4 /dev/sdb1

4关闭selinux

setenforce 0(临时生效)
vi  /etc/selinux/config
设置SELINUX=disabled(等待重启后生效)
 

5配置iptables

添加DRBD传输端口
 

二安装配置DRBD

masterslave都需要做如下操作:

1升级内核

yum install -y kernel kernel-devel kernel-headers gcc flex libxslt

2安装DRBD

tar -xzf drbd-8.4.6.tar.gz
cd drbd-8.4.6
make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/(不同内核不一样)
make install
检测是否生成drbd.ko文件
添加drbd模块
 

3安装DRBD-UTILS

tar -xzf drbd-utils-8.9.2.tar.gz
cd drbd-utils-8.9.2
./configure --prefix=/usr/local/drbd-utils --without-83support(不需要支持8.3版本)
make
make install
cp /usr/local/drbd-utils/etc/rc.d/init.d/drbd /etc/rc.d/init.d/ (添加DRBD服务启动文件)
chkconfig --add drbd (添加到服务器)
chkconfig drbd on (开机启动)
添加环境变量

4配置DRBD

drbd配置文件在/usr/loacl/drbd-utils/etc目录下
drbd.conf 其实是加载/usr/loacl/drbd-utils/etc/drbd.d/目录下的global_common.confresource配置文件(*.res自己创建)

4.1配置global_common.conf文件

# DRBD is the result of over a decade of development by LINBIT.
global {
   usage-count no;
}
common {
   protocol C;
   syncer { rate 100M;}
   handlers {
      pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
      pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
      local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
   }
   startup {
      wfc-timeout 60;
      degr-wfc-timeout 120;
      outdated-wfc-timeout 2;
   }
   options {
   }
   disk {
      on-io-error detach;
   }
 
   net {
      timeout 60;
      connect-int 10;
      ping-int 10;
      max-buffers 2048;
      max-epoch-size 2048;
      cram-hmac-alg "sha1";
      shared-secret "mydrbdsql"; 
   }
}

4.2添加resource资源

4.3建立resource资源

drbdadm create-md mydrbd
PS:如果执行不成功,写入些数据。
dd if=/dev/zero of=/dev/sdb1 bs=1M count=1

5启动

masterslave都启动DRBDservice drbd start
设置3.3为主服务器(primary 
第一次执行使用:drbdadm -- --overwrite-data-of-peer primary all
之后使用drbdadm primary all

5.1查看primary

5.2查看Secondary

主从建立完成,正在同步。

6测试

在主节点挂载
/drbd_data写一个文件a.txt
切换主从,查看数据是否同步
PS:只有主节点挂载硬盘,从节点是无法挂载硬盘的
主节点:
umount卸载,然后切换为从节点。
从节点:
切换为主节点(第一次切换需要格式化/dev/drbd0,以后不需要)
挂载
查看a.txt是否同步过来
同步完成,测试OK

三安装配置heartbeat

1安装heartbeat

主备都需要安装
yum -y install heartbeat
如果无法安装,添加sohu
wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2配置heartbeat

拷贝配置文件到/etc/ha.d
cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/

2.1配置heartbeat认证文件authkeys

主从一致:
chmod 600 authkeys

2.2配置ha.cf

主:
从:

2.3配置haresources

主从一致:
drbd-utils源码里(scripts目录下)拷贝drbddisk脚本到/etc/ha.d/resource.d

3启动

3.1启动heartbeat

service heartbeat start
3.2查看主服务器

3.3查看从服务器

如上述:配置成功

4测试

停止主服务器heartbeat测试主从切换
service heartbeat stop
PS
验证heartbeatvip是否能切换到从服务器
验证drbd的主服务器是否切换为从,从切换为主
验证主服务磁盘是否卸载,从服务器磁盘挂载

4.1主服务器结果

4.2从服务器结果

4.3验证结果

PS:成功

四安装mysql

1编译安装mysql5.6

1.1主服务器操作(挂载磁盘)

---------------------------------------------------
mkdir -p /drbd_data/service
tar -xzvf mysql-5.6.tar.gz
mv mysql /drbd_data/service/mysql
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
/drbd_data/service/mysql/scripts/mysql_install_db --datadir=/drbd_data/service/mysql/data/ --basedir=/drbd_data/service/mysql --user=mysql
chown -R mysql:mysql /drbd_data/service/mysql/
cp -f /drbd_data/service/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i 's#^basedir=$#basedir=/drbd_data/service/mysql#' /etc/init.d/mysqld
sed -i 's#^datadir=$#datadir=/drbd_data/service/mysql/data#' /etc/init.d/mysqld
cp -f /drbd_data/service/mysql/support-files/my-default.cnf /etc/my.cnf
chmod 755 /etc/init.d/mysqld
/etc/init.d/mysqld start
/drbd_data/service/mysql/bin/mysqladmin -u root password "123456"
----------------------------------------------------------

1.2从服务器操作

从主服务器cp文件:my.cnf
添加用户和组 :mysql
chown mysql /var/lib/mysql -R

2配置heartbeat关联mysql

2.1拷贝启动脚本

主服务器:
cp -f /etc/init.d/mysqld /etc/ha.d/resource.d/
从服务器:
从服务器需要从主服务器cp一份mysqld文件传到从服务器的/etc/ha.d/resource.d/目录下,并给予可执行权限

2.2修改heartbeat配置

主从都配置:

3测试

等待DRBD数据同步完毕,进行数据库热备测试

3.1停止主服务器的heartbeat

3.2查看主服务器结果(切换后为从)

3.3查看从服务器结果(切换后为主)

3.4结果

成功
PS:
  1. 可修改mysql的配置
  2. 可添加切换脚本
  3. 可检测mysqldrbd进行自动切换(自由发挥)


评论

此博客中的热门博文

Django使用markdown

Django使用markdown 安装markdown Pygments xxxxxxxxxx pip install Pygments markdown 生成css文件 xxxxxxxxxx pygmentize -S default -f html -a .codehilite > pygments.css -S 选择高亮模板,查看支持的高亮模板 xxxxxxxxxx from pygments . styles import STYLE_MAP STYLE_MAP . keys () 在对应APP添加 templatetags文件夹 custom_markdown.py xxxxxxxxxx import markdown from django import template from django . template . defaultfilters import stringfilter from django . utils . safestring import mark_safe register = template . Library () #自定义filter时必须加上 @register . filter ( is_safe = True ) #注册template filter @stringfilter       #希望字符串作为参数 def custom_markdown ( value ):     return mark_safe ( markdown . markdown ( value ,         extensions =[ 'markdown.extensions.fenced_code' , 'markdown.extensions.codehilite' ],         safe_mode = True ,         enable_attributes = False )) 模板中引用 xxxxxxxxxx {% load custom_markdown %...

web管理openvpn

  web管理openvpn 一部署目标 客户端使用openvpn客户端使用证书密钥+用户密码验证登录,拨入内网 服务器端使用mysql存储用户信息,并加密用户密码 开发openvpn管理平台,可以web界面管理openvpn 指定人员IP,通过策略限制人员访问资源 二部署openvpn 1安装openvpn服务端 1.1环境 系统 centos7.3 IP地址 100.100.100.100 Openvpn版本 2.4.3 安装方式 YUM 数据库 percona-server-5.7.18-15 验证工具 pam_mysql openvpn插件版本 2.0.9 1.2安装依赖 yum -y install epel-release yum install pam-devel pam yum install -y easy-rsa yum -y install mariadb-server mariadb-devel mariadb-libs yum install -y cyrus-sasl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-gssapi 1.3安装openvpn 使用yum命令安装openvpn yum install -y openvpn 1.4配置证书密钥 复制证书密钥工具 #cp -R /usr/share/easy-rsa /etc/openvpn/ 进入工具目录 #cd /etc/openvpn/easy-rsa 修改证书生成信息 #vim /etc/openvpn/easy-rsa/2.0/vars export KEY_COUNTRY="CN" export KEY_PROVINCE="CA" export KEY_CITY="HangZhou" export KEY_ORG="xxx" export KEY_EMAIL="server_monitor@xxx.com" export KEY_OU="YunWei 重新加载 #source ./vars 重新产生CA证书 ./clean-all ./build-ca 创建服务端证书 ./build-key...

Django部署

Django部署   uwsgi配置 官方文档 : uwsgi-docs 选项 描述 chdir the base directory (full path) module Django's wsgi file master 启动管理主进程 processes 启动的进程数 threads 每个进程的线程数 uid 启动uwsgi的用户 gid 启动uwsgi的用户组 pidfile 进程号文件 max-requests 最大请求数 vacuum clear environment on exit 服务停止自动清理sock文件和pid文件 daemonize 日志目录 home python虚拟环境路径 socket scoket地址(tcp或者sock文件路径) chmod-socket sock文件权限 http uwsgi监听IP和端口 x [uwsgi] chdir = /opt/Platform module = Platform.wsgi master = True pidfile = /tmp/tzop.pid vacuum = True max-requests = 5000 processes = 8 #socket=/var/run/op_uwsgi.sock # unxi scoket need set chmod-socket #chmod-socket=666 #socket=127.0.0.1:8000 http = 127 .0.0.1:8000 #static-map = /static=/application/Platform/static daemonize = /opt/Platform/logs/uwsgi.log 启动 x uwsgi --ini tzop.ini 停止 x uwsgi --stop /tmp/tzop.pid 重载 x uwsgi --reload /tmp/tzop.pid nginx配置 uwsgi_pass 不对 location 目录转发 x server {       listen         80 ;       server_name _...