设为首页 收藏本站
查看: 418|回复: 0

[经验分享] Mysql的写高可用,读的负载均衡

[复制链接]

尚未签到

发表于 2018-10-1 09:01:45 | 显示全部楼层 |阅读模式
  Mysql的写高可用,读的负载均衡
  DRBD+MYSQL+HEARTBEAT+PACEMAKER+LVS+KEEPALIVE
  说明:
  1. 是Mysql的高可用集群
  2. 通过Mysql的主从复制,实现mysql的读写分离。
  3. 集群资源管理是用的是pacemaker,对应的配置文件是cib.xml,而非旧版本的haresources。但haresources比cib.xml简单很多。
  4. 使用heartbeat实现Mysql主服务的高可用,keepalived实现从服务器的高可用。
  ###########架构简介############
  ##mysql主服务器+DRBD的主节点
  IP: 192.168.1.104——>drbd1
  ##mysql主服务器(备用)+DRBD的从节点
  IP: 192.168.1.105——>drbd2
  ##mysql从服务器(realserver)
  IP:192.168.1.106——>RS1
  192.168.1.107——>RS2
  192.168.1.107——>RS3
  ##LVS的DR+keepalived的主节点
  IP:192.168.1.109——>lvs1
  ##LVS的DR+keepalived的从节点
  IP:192.168.1.110——>lvs2
  ##heartbeat所使用的VIP:
  IP:192.168.1.111——>写数据库时,所使用的VIP
  ##lvs+keepalived所使用的VIP:
  IP:192.168.1.112——>读数据库时,所使用的VIP
  ###########所需软件#############
  1. drbd-8.4.3.tar.gz
  2. mysql-5.5.28-linux2.6-x86_64.tar.gz9(二进制)
  3. Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2
  4. ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz
  5. pacemaker_1.1.7.orig.tar.gz
  6. keepalived-1.2.7-3.el6.x86_64.rpm
  注:yum源的配置如下:
  [local]
  baseurl=file:///mnt
  gpgcheck=0
  [ha]
  baseurl=file:///mnt/HighAvailability
  gpgcheck=0
  [LB]
  baseurl=file:///mnt/LoadBalancer
  gpgcheck=0
  [server]
  baseurl=file:///mnt/Server
  gpgcheck=0
  ############Drbd的安装与配置#############
  ##Drbd的安装
  1. tar xf drbd-8.4.3.tar.gz -C /usr/local/src
  2. cd /usr/loca/src/drbd-8.4.3
  3. ./configure \
  >--prefix=/usr/local/drbd \
  >--with-km \
  >--with-distro=redhat
  报错1:
  configure: error: Cannot build utils without flex, either install flex or pass the --without-utils option.
  解决方法:
  yum -y install flex
  4. make && make install
  5. cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/drbd
  6. chkconfig --add drbd
  7. ln -sv /usr/local/drbd/etc/drbd.conf /etc/
  8. ln -sv /usr/local/drbd/etc/drbd.d /etc/
  9. modprobe drbd
  注:以上操作在主从DRBD服务器上都需要做
  ##Drbd的配置
  1. 用fdisk -c /dev/sdb 分出10G大小的/dev/sdb1
  2. 配置/etc/drbd.d/global_common.conf
  global {
  usage-count yes;
  }
  common {
  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";
  fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
  split-brain "/usr/lib/drbd/notify-split-brain.sh root";
  out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
  }
  startup {
  wfc-timeout 120;
  degr-wfc-timeout 120;
  }
  disk {
  resync-rate     40M;
  on-io-error     detach;
  fencing         resource-only;
  }
  net {
  protocol C;
  cram-hmac-alg   sha1;
  shared-secret   "mysql-ha";
  csums-alg       sha1;
  verify-alg crc32c;
  }
  }
  3. 配置/etc/drbd.d/r0.res
  resource r0 {
  device  /dev/drbd0;
  disk    /dev/sdb1;
  meta-disk       internal;
  on drbd1 {
  address 192.168.1.104:7789;
  }
  on drbd2 {
  address 192.168.1.105:7789;
  }
  }
  4. drbdadm create-md  r0
  5. service drbd start
  注:以上说有操作在主从节点都要进行
  6. drbdadm primary r0
  报错1:
  0: State change failed: (-2) Need access to UpToDate data
  Command 'drbdsetup primary 0' terminated with exit code 17
  解决方法:
  drbdadm -- --overwrite-data-of-peer primary all
  7. mkfs -t ext4 /dev/drbd0
  8. mkdir /data
  9. mount /dev/drbd0 /data
  #################MySQL的安装与配置#################
  ##MySQL的安装
  1. tar xf mysql-5.5.28-linux2.6-x86_64.tar.gz -C /usr/local
  2. ln -sv mysql-5.5.28-linux2.6-x86_64.tar.gz mysql
  3. cd mysql
  4. groupadd mysql
  5. useradd mysql -g mysql -s /sbin/nologin -M -r
  6. chown -R mysql.mysql .
  7. chown -R mysql.mysql /data
  8. scripts/mysql_install_db --user=mysql --datadir=/data
  9. chown -R root .
  10. cp support-files/mysql.server /etc/init.d/mysqld
  11. cp support-files/my-large.cnf /data/my.cnf
  12. ln -sv /data/my.cnf /etc/
  13. ./bin/mysqld_safe --user=mysql &
  14. 修改/etc/my.cnf
  [mysqld]
  datadir=/data
  15. echo "PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
  16. . /etc/profile
  17. 修改/etc/init.d/mysqld
  datadir=/data
  注:以上同样的操作也要在mysql的三个从节点上进行,另外,在备用主节点上,除了8、11、13步骤外,其余的需要做一遍。
  ##MySQL的配置
  主节点:
  1.修改my.cnf
  [mysqld]
  server-id=11
  log-bin=mysql-bin #默认是开启的
  sync-binlog=1
  innodb-file-per-table=1
  2. 创建从服务器拷贝账号

  grant replication client, replication slave on *.* to 'repl'@'192.168.1.106/107/108'>  从节点:
  1.修改my.cnf
  [mysqld]
  server-id=12 #另外两台分别是13,14
  read-only=1
  relay-log=relay-bin
  innodb-file-per-table=1
  2. 设置所要连接的主服务器以及拷贝的文件和所在位置
  mysql> change master to
  -> master_host='192.168.1.111',
  -> master_user='repl',
  -> master_password='123',
  -> master_port=3306,
  3. start slave;
  4. show slave status; #查看是否配置成功。
  ##################Heartbeat-HA的安装################
  >>>>>>>>>>>>定义环境变量>>>>>>>>heartbeat-3-0-7e3a82377fa8.tar.bz2的安装>/etc/profile.d/heartbeat.sh
  2. . /etc/profile.d/heartbeat.sh
  ########################Heartbeat的配置######################
  1. cd /usr/local/heartbeat/share/doc/heartbeat
  2. cp ha.cf haresources authkeys /usr/local/heartbeat/etc/ha.d
  3. cd /usr/local/heartbeat/etc/ha.d
  4. chmod 600 authkeys
  5. vim /etc/hosts
  192.168.1.104 drbd1
  192.168.1.105 drbd2
  6. vim ha.cf
  autojoin none
  bcast eth0
  warntime 15
  deadtime 60
  initdead 120
  keepalive 2
  compression bz2
  compression_threshold 2
  debug 0
  node drbd1
  node drbd2
  pacemaker respawn
  7. vim authkeys
  auth 1
  1 crc
  8.  service heartbeat start
  报错1:
  /usr/local/heartbeat/etc/ha.d/shellfuncs: line 96: /usr/lib/ocf/lib//heartbeat/ocf-shellfuncs: No such file or directory
  解决方法:
  修改/usr/local/heartbeat/etc/ha.d/shellfuncs:
  . /usr/local/heartbeat/usr/lib/ocf/lib//heartbeat/ocf-shellfuncs
  报错2:
  Starting High-Availability services:  Heartbeat failure [rc=6]. Failed.
  heartbeat[5175]: 2013/06/14_00:24:39 ERROR: Illegal directive [bcast] in /usr/local/heartbeat/etc/ha.d//ha.cf
  heartbeat[5175]: 2013/06/14_00:24:39 ERROR: Compression module(bz2) not found
  heartbeat[5175]: 2013/06/14_00:24:39 info: Pacemaker support: respawn
  heartbeat[5175]: 2013/06/14_00:24:39 WARN: File /usr/local/heartbeat/etc/ha.d//haresources exists.
  heartbeat[5175]: 2013/06/14_00:24:39 WARN: This file is not used because pacemaker is enabled
  heartbeat[5175]: 2013/06/14_00:24:39 ERROR: Client child command [/usr/local/heartbeat/lib/heartbeat/ccm] is not executable
  heartbeat[5175]: 2013/06/14_00:24:39 ERROR: Directive respawn  hacluster /usr/local/heartbeat/lib/heartbeat/ccm failed
  heartbeat[5175]: 2013/06/14_00:24:39 ERROR: Heartbeat not started: configuration error.
  heartbeat[5175]: 2013/06/14_00:24:39 ERROR: Configuration error, heartbeat not started.
  解决方法:
  1. ln -svf /usr/local/heartbeat/lib64/heartbeat/ccm /usr/local/heartbeat/lib/heartbeat/
  2. ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
  3. ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
  9. chkconfig heartbeat on ; checonfig logd on
  ######################配置pacemaker#############################
  1. 配置如下:
  使用如下命令:crm configure show 显示配置如下
  node $id="97ae394b-5f7c-472c-85a7-8e22de0c656b" drbd2 \
  attributes standby="off"
  node $id="e0c675cd-57aa-4975-b36c-8564c13c714a" drbd1 \
  attributes standby="off"
  primitive drbd_r0 ocf:heartbeat:drbd \
  params drbd_resource="r0" \
  op monitor interval="30s" role="Master" \
  op start interval="0" timeout="240s" \
  op stop interval="0" timeout="100s"
  primitive fs ocf:heartbeat:Filesystem \
  params device="/dev/drbd0" directory="/data" fstype="ext4" \
  op start interval="0" timeout="60s" \
  op stop interval="0" timeout="60s" \
  meta target-role="Started"
  primitive myip ocf:heartbeat:IPaddr \
  params ip="192.168.1.111"
  primitive mysql lsb:mysqld
  group mysqlservice fs myip mysql
  ms ms_drbd_mysql drbd_r0 \
  meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
  colocation fs_with_drbd_r0 inf: mysqlservice ms_drbd_mysql:Master
  colocation mysql_on_drbd_master inf: mysql ms_drbd_mysql:Master
  order fs_after_drbd inf: ms_drbd_mysql:promote fs:start
  order mysql_after_fs inf: fs:start mysql:start
  property $id="cib-bootstrap-options" \
  dc-version="1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff" \
  cluster-infrastructure="Heartbeat" \
  no-quorum-policy="ignore" \
  stonith-enabled="false" \
  last-lrm-refresh="1371372103" \
  expected-quorum-votes="2"
  ###################Keepalived+LVS的安装与配置###########################
  >>>>>>>>>>>>>>>>>>>>>安装配置

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606965-1-1.html 上篇帖子: 利用filebeat推送mysql慢查询日志 下篇帖子: Ubuntu 12.04.1 mysql从5.5升级到5.6
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表