heartbeat+drbd+mysql实现高可用

时间:2021-05-13 03:13:52

9、heartbeat+DRBD+mysql实现高可用

http://wangjun51.blog.51cto.com/6124567/1315456
 

DRBD作用:1、 远程数据备份 

         2、 远程数据镜像 

 

 

DRBD官网:drbd.linbit.com 

 

heartbeat+drbd+mysql实现高可用


heartbeat+drbd+mysql实现高可用

 

server1、2都要添加一块硬盘 且容量大小相等 

 真实服务器server1:  eth0  ---  10.0.5.100(老师做实验的IP)  10.0.199.4(我自己的IP)

                    eth0:0 --  10.0.5.200                 10.0.199.200

                    eth1  --- 192.168.10.1                192.168.100.1

  

真实服务器 Server2: eth0  ---  10.0.5.1                                       10.0.199.3            

 

 

                   eth1  ---  192.168.100.2               192.168.100.2

 

 

 

 

  两台真实服务器上都要进行以下操作:(以下是在10.0.199.4上的操作) 

  (1)安装DRBD

     # yum install kernel kernel-devel flex

         #  tar -xvf  drbd-8.4.4-tar.gz
 

     # cd drbd-8.4.4 

     # ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with -utils --with-km  --with-udev   --with-xen   --with-pacemaker   --with-heartbeat  --with-bashcompletion  --with-distro=redhat  --with-initdir=/etc/init.d   

     # make && make install

     # modprobe drbd 
     # lsmod|grep  drbd 

 

(2)配置DRBD 

      # vim  /etc/drbd.conf

    # vim /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/drb

d/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";       

 }

        startup { 
        } 
        options { 
        } 
        disk { 
                on-io-error detach; 
             } 
        net { 
                protocol C; 
                after-sb-0pri disconnect; 
                after-sb-1pri disconnect; 
                after-sb-2pri disconnect; 
                rr-conflict disconnect; 
                cram-hmac-alg sha1; 
                shared-secret "aixocm"; 
            } 

        syncer { 
                rate 50M; 
        } 
} 

 

创建r0资源 

  #  vim  r0.res 

resource r0{    \\r0 资源名字 

     on server1   \\第一台设备的主机名 

        device /dev/drbd0; \\ 自定义的物理设备的逻辑路径

          disk  /dev/sdb1;    \\实际的物理磁盘设备或 逻辑分区

          address 10.0.199.4:7788 \\本机通信地址 或 机器监听地址和端口

          meta-disk  internal; \\源数据的存放方式  internal表示数据和源数据放在同一块磁盘

     } 

  on server2 

     {    device /dev/drbd0;  \\虚拟设备 

          disk  /dev/sdb1;      \\ 实际的磁盘 

          address 10.0.199.3:7788;  \\ 本机通信地址 

          meta-disk  internal;  \\源数据的存放方式  internal表示数据和源数据放在同一块磁盘

     } 

} 

 # fdisk  /dev/sdb  n  p 1 w \\分区 

 # fdisk -l 

 

  (3)创建DRBD资源

     # drbdadm create-md r0  \\ create-md创建源数据  r0 资源的名字 主从同时启动 

      # service drbd start  \\主从服务器要同时启动  

     # cat /proc/drbd   \\查看DRBD状态 

       ro:Secondary/Secondary \\ 表示本机角色\另一台服务器角色 

 

  (4 )将其中一台服务器提升为主服务器

      # drbdsetup  /dev/drbd0(设备名) primary --o   \\ 在主服务器上操作 

     # cat /proc/drbd \\查看DRBD状态 

  

    (5 )格式化drbd设备 

     # mkfs.ext4 /dev/drbd0   \\不是格式化实际的物理分区  只需要主服务器进行此步 

     #ls /database/mydata 

     # lsof -i:3306  \\ 两边都没有开启 

     # mount /dev/drbd0  /database/mydata  \\只需主服务器进行此步 

     # df -h

         # df -h  在从服务器上 发现木有挂载 

     

   (6)挂载设备到需要的特定目录   \\只需主服务器进行此步

     cd  /database/mydata

     # cd /usr/local/mysql 

      ./scripts/mysql_install_db  --user=mysql  --datadir=/database/mydata \\数据库初始化 

     ls 

     cd /database/mydata 

 

  

   (7)配置heartbeat的haresource文件  \\主从服务器都要进行此步

      此步骤的配置和 上面的  “heartbeat+ldirector+lvs实现高可用集群”中的对heartbeat的设置完全一样 

       除了资源配置文件 下面配置资源配置文件:

     # vim /etc/ha.d/haresources 

 

   server1 IPaddr::10.0.199.200/32/eth0:0 drbddisk::r0 Filesystem::/dev/drbd0::/ database/mydata::ext4 mysqld     # 10.0.199.200是虚拟IP  server1 是主服务器的主机名 


   (8 )# df -h 

       # lsof -i:3306 

       # umount /database/mydata  \\主服务器进行此步骤 

       # service heartbeat start \\两边都要启动 

       # df -h  \\检查是否已挂载 

       # lsof -i:3306 \\检查是否启动 

       # mysql -u root 

       # 授权 mysql> grant all on *.*  to 'root '@'% ' identified by 'aixocm '; 

       # 客户端: mysql -u root -h 10.0.199.200  -p   # 10.0.199.200是虚拟IP 
       # service heartbeat stop 

  从服务器:# df -h 
  DRBD 只能是主服务器才能挂载,从服务器是不能挂载设备 的。 
  客户端登录数据库 也是可以的。 

  (9 )手动进行 drbd的升级和降级处理 
# umount /dev/drbd0 
# drbdadm  secondary r0  \\降级 
# drbdadm primary r0 \\升级 
# mount /dev/drbd0 /database/mydata 


===================== 拓展 ========================== 

 

服务器群集技术主要使用是实现网络的负载均衡,通俗地讲就是把多台服务器通过快速通信链路连接起来,从外部看来,这些服务器就像一台服务器在工作,而对内来说,外面来的负载通过一定的机制动态地分配到这些节点机中去,从而达到超级服务器才有的高性能、高可用。

集群的优点:

高可伸缩性:群集可以随着负荷的增长,群集系统中添加更多的服务器,来分担网络流量

高可用性:是指群集可以在一台服务器不工作的时候,另一台服务器接管这台服务器的工作,防止其服务器完全瘫痪         高可管理性:系统管理员可以从远程管理一个、甚至一组集群。

LVS(Linux Virtual Server),虚拟服务器是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。

LVS包括IPVS与ipvsadm, IPVS称为IP虚拟服务器是运行在LVS下的提供负载平衡功能的一种技术,在linux2.6的内核中已经默认嵌入。它基本上就是一种4层的交换机

集群计算机按功能和结构可以分成以下几类:

高可用性集群 High-availability (HA) clusters

负载均衡集群 Load balancing clusters

高性能计算集群 High-performance (HPC) clusters

网格计算 Grid computing

LVS集群通常是由LVS Director用于中继入站请求到集群内部节点的转发方法类型描述的。

目前可用的三种方法是:

网络地址转换(LVS-NAT)

直接路由(LVS-DR)

IP隧道(LVS-TUN