HA+LB+NAS:三层架构实现群集高可用和高性能

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
文件存储 NAS,50GB 3个月
简介:

这篇博客就算是小编前两篇有关服务器群集技术的结合,HA+LB+NAS来实现群集的高可用、高并发(主要是针对web服务器),HA和LB相信读者都很清楚啦,那什么是NAS呢,网络存储技术,简单的说就是讲服务器的文件存储转移到一个专门做存储的介质上,改介质是由瘦OS和大容量硬盘组成的,当前端服务器需要数据时直接从后端介质拿就是了,写数据也是直接写到后端,目前做NAS的硬件有很多啦,做瘦OS的小编觉得OPENFILER比较好用,当然还有freeNAS,之所以叫瘦OS(实质是小linux)是因为它不需要太强大的功能,只需要将数据共享出去就是了,比如说NFS,SAMBA,CIFS等等啦,但是其亮点是有友好的界面管理啦,小编这里直接使用LINUX下的NFS来做NAS啦。。

整体结构图

clip_image002

1.NFS服务器配置

1.1.预装wordpress

注:后端存储需要数据库的支持,所以先安装MySql

# tar –zxvf mysql-5.5.15-linux2.6-i686.tar.gz –C /usr/local/

方便打开mysql目录,给解压目录建立软连接

# cd /usr/local

# ln -s mysql-5.5.15-linux2.6-i686 mysql

安装可以参考/usr/local/INSTALL-BINARY文件

78 shell> groupadd mysql

79 shell> useradd -r -g mysql mysql

80 shell> cd /usr/local

81 shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

82 shell> ln -s full-path-to-mysql-VERSION-OS mysql

83 shell> cd mysql

84 shell> chown -R mysql .

85 shell> chgrp -R mysql .

86 shell> scripts/mysql_install_db --user=mysql

87 shell> chown -R root .

88 shell> chown -R mysql data

89 # Next command is optional

90 shell> cp support-files/my-medium.cnf /etc/my.cnf

91 shell> bin/mysqld_safe --user=mysql &

92 # Next command is optional

93 shell> cp support-files/mysql.server /etc/init.d/mysql.server

# groupadd -r mysql

# useradd -r -g mysql mysql –M

# chown -R mysql .

# chogrp -R mysql .

# scripts/mysql_install_db --user=mysql

# chown -R root .

# chgrp -R mysql data

# cp support-files/my-medium.cnf /etc/my.cnf

# cp support-files/mysql.server /etc/init.d/mysqld

更改mysqld的权限

# chmod a+x /etc/init.d/mysqld

# chkconfig –add mysqld

配置mysql的环境变量

# vim /etc/profile

44 PATH=$PATH:/usr/local/mysql/bin

# . /etc/profile(.后面加空格)

创建mysql.conf文件并添加库文件路径

# vim /etc/ld.so.conf.d/mysql.conf

(添加下面内容)

/usr/local/mysql/lib

# ldconfig

为头文件建立连接

# cd /usr/local/mysql

# ln -s include /usr/include/mysql

给root用户密码

# mysqladmin -u root -p password '123456'

# service mysqld restart

注:其实就是将wordpress的站点文件展开就是了,真正的配置可以在前端的web服务器上完成

# unzip wordpress-3.0.5-zh_CN.zip

# cdwordpress-3.0.5-zh_CN

# mv wordpress /usr/local/nginx/html/website

创建mybbs数据库

# mysql–u root –p

Enter password:

mysql>create database mybbs;

mysql>grant all on mybbs to ‘root’@’192.168.110.10’identified by ‘123456’;

mysql>grant all on mybbs to ‘root’@’192.168.110.12’identified by ‘123456’; 

mysql>grant all on mybbs to ‘root’@’192.168.110.13’identified by ‘123456’;

mysql>flush privileges;

在/usr/local/nginx/html/website下创建一个隐藏的.test.html用于director对服务器的监控时反馈信息

# cd/usr/local/nginx/html/website

# echo ‘ok’ .test.html

动态网站搭建完成

1.2.服务器端配置

确保服务器端已经安装以下有关nfs的软件包

# rpm -qa |grep nfs

nfs-utils-lib-1.0.8-7.6.el5

nfs-utils-1.0.9-42.el5

查看rpc工作状态

# rpcinfo -p

program vers proto port

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper

100024 1 udp 653 status

100024 1 tcp 656 status

100011 1 udp 663 rquotad

100011 2 udp 663 rquotad

100011 1 tcp 666 rquotad

100011 2 tcp 666 rquotad

100003 2 udp 2049 nfs

100003 3 udp 2049 nfs

100003 4 udp 2049 nfs

100021 1 udp 38515 nlockmgr

100021 3 udp 38515 nlockmgr

100021 4 udp 38515 nlockmgr

100003 2 tcp 2049 nfs

100003 3 tcp 2049 nfs

100003 4 tcp 2049 nfs

100021 1 tcp 34341 nlockmgr

100021 3 tcp 34341 nlockmgr

100021 4 tcp 34341 nlockmgr

100005 1 udp 677 mountd

100005 1 tcp 680 mountd

100005 2 udp 677 mountd

100005 2 tcp 680 mountd

100005 3 udp 677 mountd

100005 3 tcp 680 mountd

把/usr/local/nginx/html/website并修改权限

# chmod o+wt /usr/local/nginx/html/website 

编辑共享清单信息

# vim /etc/exports

/usr/local/nginx/html/website 192.168.110.0/28(rw,sync)(给192.168.110.0/28网段的用户对/usr/local/nginx/html/website有读写权限)

# exportfs –r (刷新共享清单)

# service nfs restart

2.web服务器配置

2.1.web服务器1配置

2.1.1.LAMP环境的搭建

搭建前准备工作

下载一下安装包:

httpd-2.4.4

apr-1.4.6

apr-util-1.5.1

pcre采用光盘镜像的rpm安装包

mysql-5.6.10

php-5.4.13

phpMyAdmin-3.5.8-all-languages

ZendOptimizer-3.3.0a-linux-glibc21-i386

确保搭建的平台有以下开发组件

Development Libraries

Development Tools

Legacy Software Development

X Software Development

安装apache

源码安装httpd:

安装使用httpd我们必须先安装apr和它的工具apr-util

解压apr和apr-util并进入解压后的目录进行编译安装

#tar –zxvf apr-1.4.6.tar.gz –C /usr/local/src/

#tar –zxvf apr-util-1.5.1.tar.gz –C /usr/local/src/

# cd/usr/local/src/ apr-1.4.6

# ./configure –prefix=/usr/local/apr

# make&& make install

# cd /usr/local/src/ apr-util-1.5.1

# ./configure --with-apr=/usr/local/apr/bin/apr-1-config

# make&& make install

yum安装pcre和pcre-devel

# yum install pcre

# yum install pcre-devel

解压httpd并编译安装

# tar –jxvf httpd.2.4.4.tar.bz2 –C /usr/local/src/

# cd/usr/local/src/ httpd.2.4.4

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-pcre --with-z --enable-mpms-shared=all

# make&& make install

为头文件目录建一个链接,方便用户能够访问到include文件

# ln -s /usr/local/apache/include /usr/include/apache

方便启动关闭重启apache服务建立httpd控制脚本

# vim /etc/init.d/httpd

#!/bin/sh

#set -x

#description:http server

#chkconfig:2345 88 60

HTTPD='/usr/local/apache/bin/httpd'

CONFFILE='/etc/httpd/httpd.conf'

start(){

[ -f /var/lock/subsys/httpd ] && echo "apache is started" && exit

echo -n "starting apache......."

sleep 1

$HTTPD -f $CONFFILE && RETVAL=0 ||RETVAL=1

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd && echo "ok" || echo "fail"

}

stop(){

[ ! -f /var/lock/subsys/httpd ]&& echo "httpd is stoped......" && exit

echo -n "stoping httpd......"

sleep 1

/bin/rm -rf /var/lock/subsys/httpd 

$HTTPD -k stop && RETVAL=0 || RETVAL=1

[ $RETVAL -eq 0 ] && rm -rf /var/lock/subsys/httpd && echo "ok" || echo "fail"

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo "start|stop|restart"

;;

Esac

# service httpd start

starting apache.......ok

安装mysql

# tar -zxvf mysql-5.6.10.tar.gz -C /usr/local/src/

安装mysql需要cmake,Cmake它相当于./configure

安装cmake

# tar -zxvf cmake-2.8.10.2.tar.gz -C /usr/local/src/

# cd/usr/local/src/ cmake-2.8.10.2

# ./configure --prefix=/usr/local/cmake

执行make && make install

Cmake的可执行文件在/usr/local/cmake/bin目录下为了方便使用cmake,更改/etc/profile文件内容,添加一条PATH值,能直接使用cmke

# vim /etc/profile

45 PATH=$PATH:/usr/local/cmake/bin

安装mysql

# cd/usr/local/src/ mysql-5.6.10

# cmake .

# make&& make install

Mysql默认安装到/usr/local/下,增加mysql组创建用户并更改mysql目录下的所属者和所属组

# cd /usr/local/mysql

# groupadd mysql

# useradd -r -g mysql mysql

# chown -R mysql .

# chgrp -R mysql .

初始化mysql

# cd /usr/local/mysql

# scripts/mysql_install_db --user=mysql

进行权限更改

# chown -R root .

# chown -R mysql data

拷贝/mysql/ support-files目录下配置文件到/etc/my.cnf作为新的配置文件

# cd /usr/local/mysql/ support-files

# cp my-default.cnf /etc/my.cnf

拷贝mysql.server文件到/etc/init.d/mysqld作为新的控制文件,并给它执行权

# cp mysql.server /etc/init.d/mysqld

# chmod a+x /etc/init.d/mysqld

为直接使用mysql命令添加mysql环境变量

# vim /etc/profile

45 PATH=$PATH:/usr/local/cmake/bin:/usr/local/mysql/bin

给数据库创建用户和密码

# mysqladmin -u root -p password 123456

登录

# mysql -u root –p

Enter password:

使系统能够正确找到lib文件,我们需要给它指定正确的lib路径,创建一个mysql.conf在里面写入lib的路径/usr/local/mysql/bin,并对ld.so.cache文件刷新

# vim /etc/ld.so.conf.d/mysql.conf

加入下面内容

/usr/local/mysql/bin

# ldconfig(刷新)

再给头文件做一个链接

# ln -s /usr/local/mysql/include /usr/include/mysql

安装php

# tar -jxvf php-5.4.13.tar.bz2 -C /usr/local/src/

# cd /usr/local/src/ php-5.4.13

# ./configure --prefix=/usr/local/php --sysconfdir=/etc --with-apxs2=/usr/local/apache/bin/apxs --with-zlib --with-gd --with-jpeg-dir --with-png-dir --enable-mbstring --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-xml --with-freetype-dir --enable-xml

# Make && make install

添加php的环境路径:

# vim /etc/profile

指定php的lib文件路径

# vim /etc/ld.so.conf.d/php.conf

加入以下内容

/usr/local/php/lib

# ldconfig(更新)

为头文件建立链接

# cd /usr/local/php

# ln -s include /usr/include/php

为了让apache能够处理一些php网页,我们要加入一些模块,向httpd.conf文件内加入语句

# vim /etc/httpd/httpd.conf

147 LoadModule php5_module modules/libphp5.so

148 AddType application/x-httpd-php .php .phtml

246 <IfModule dir_module>

247 DirectoryIndex index.html index.php

248 </IfModule>

更改web主站点路径到挂载目录,并创建虚拟主机头

213 DocumentRoot "/var/www/website"

514 <Virtualhost 192.168.110.12:80>

515 DocumentRoot /var/www/website

516 ServerName www.zzdx.com

517 ErrorLog logs/tec_error_log

518 CustomLog logs/tec_access_log combined

519 </VirtualHost>

# service httpd restart

stoping httpd......ok

starting apache.......ok

 

2.1.2.Zend加速php

# tar -zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz

# cd ZendOptimizer-3.3.0a-linux-glibc21-i386

# ./install

安装过程(如图2-1-2-1至图2-1-2-7)

clip_image004

图2-1-2-1

clip_image006

图2-1-2-2

clip_image008

图2-1-2-3

指定zend的安装路径

clip_image010

图2-1-2-4

指定zend配置文件安装路径

clip_image012

图2-1-2-5

clip_image014

图2-1-2-6

指定apachectl的路径

clip_image016

图2-1-2-7

 

2.1.3.安装snmp软件包及相关组件

使监测服务器能够正常监控web服务器

# cd /mnt/cdrom/Server/

# rpm -ivh net-snmp-5.3.2.2-7.el5.i386.rpm

# yum install net-snmp-utils-5.3.2.2-7.el5.i386.rpm

 

2.1.4添加虚拟端口并更改系统控制文件

添加虚拟端口并配置路由,web服务器回应客户端时使用虚拟端口

# ifconfig lo:0 192.168.110.1 broadcast 192.168.110.1 netmask 255.255.255.255

# route add -host 192.168.110.1 dev lo:0

更改系统控制文件,在接收arp请求时不给予回应以防冲突

# vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_announce = 2

 

2.1.5.挂载NFS资源到本地

# vim /etc/fstab

加入下面代码

192.168.110.10:/usr/local/nginx/html/website /var/www/website nfs rw,soft,intr 0 0

 

2.1.6.安装wordpress

在NFS服务器上只是将wordpress的站点文件展开了,真正的配置在web站点上,配置过程如图2-1-6-1至图2-1-6-6所示:

clip_image018

图2-1-6-1

clip_image020

图2-1-6-2

clip_image022

图2-1-6-3

clip_image024

图2-1-6-4

clip_image026

图2-1-6-5

clip_image028

图2-1-6-6

 

2.2web服务器2配置

2.2.1.LAMP环境的搭建

搭建前准备工作

下载一下安装包:

httpd-2.4.4

apr-1.4.6

apr-util-1.5.1

pcre采用光盘镜像的rpm安装包

mysql-5.6.10

php-5.4.13

phpMyAdmin-3.5.8-all-languages

ZendOptimizer-3.3.0a-linux-glibc21-i386

确保搭建的平台有以下开发组件

Development Libraries

Development Tools

Legacy Software Development

X Software Development

安装apache

源码安装httpd:

安装使用httpd我们必须先安装apr和它的工具apr-util

解压apr和apr-util并进入解压后的目录进行编译安装

#tar –zxvf apr-1.4.6.tar.gz –C /usr/local/src/

#tar –zxvf apr-util-1.5.1.tar.gz –C /usr/local/src/

# cd/usr/local/src/ apr-1.4.6

# ./configure –prefix=/usr/local/apr

# make&& make install

# cd /usr/local/src/ apr-util-1.5.1

# ./configure --with-apr=/usr/local/apr/bin/apr-1-config

# make&& make install

yum安装pcre和pcre-devel

# yum install pcre

# yum install pcre-devel

解压httpd并编译安装

# tar –jxvf httpd.2.4.4.tar.bz2 –C /usr/local/src/

# cd/usr/local/src/ httpd.2.4.4

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-pcre --with-z --enable-mpms-shared=all

# make&& make install

为头文件目录建一个链接,方便用户能够访问到include文件

# ln -s /usr/local/apache/include /usr/include/apache

方便启动关闭重启apache服务建立httpd控制脚本

# vim /etc/init.d/httpd

#!/bin/sh

#set -x

#description:http server

#chkconfig:2345 88 60

HTTPD='/usr/local/apache/bin/httpd'

CONFFILE='/etc/httpd/httpd.conf'

start(){

[ -f /var/lock/subsys/httpd ] && echo "apache is started" && exit

echo -n "starting apache......."

sleep 1

$HTTPD -f $CONFFILE && RETVAL=0 ||RETVAL=1

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd && echo "ok" || echo "fail"

}

stop(){

[ ! -f /var/lock/subsys/httpd ]&& echo "httpd is stoped......" && exit

echo -n "stoping httpd......"

sleep 1

/bin/rm -rf /var/lock/subsys/httpd 

$HTTPD -k stop && RETVAL=0 || RETVAL=1

[ $RETVAL -eq 0 ] && rm -rf /var/lock/subsys/httpd && echo "ok" || echo "fail"

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo "start|stop|restart"

;;

Esac

# service httpd start

starting apache.......ok

安装mysql

# tar -zxvf mysql-5.6.10.tar.gz -C /usr/local/src/

安装mysql需要cmake,Cmake它相当于./configure

安装cmake

# tar -zxvf cmake-2.8.10.2.tar.gz -C /usr/local/src/

# cd/usr/local/src/ cmake-2.8.10.2

# ./configure --prefix=/usr/local/cmake

执行make && make install

Cmake的可执行文件在/usr/local/cmake/bin目录下为了方便使用cmake,更改/etc/profile文件内容,添加一条PATH值,能直接使用cmke

# vim /etc/profile

45 PATH=$PATH:/usr/local/cmake/bin

安装mysql

# cd/usr/local/src/ mysql-5.6.10

# cmake .

# make&& make install

Mysql默认安装到/usr/local/下,增加mysql组创建用户并更改mysql目录下的所属者和所属组

# cd /usr/local/mysql

# groupadd mysql

# useradd -r -g mysql mysql

# chown -R mysql .

# chgrp -R mysql .

初始化mysql

# cd /usr/local/mysql

# scripts/mysql_install_db --user=mysql

进行权限更改

# chown -R root .

# chown -R mysql data

拷贝/mysql/ support-files目录下配置文件到/etc/my.cnf作为新的配置文件

# cd /usr/local/mysql/ support-files

# cp my-default.cnf /etc/my.cnf

拷贝mysql.server文件到/etc/init.d/mysqld作为新的控制文件,并给它执行权

# cp mysql.server /etc/init.d/mysqld

# chmod a+x /etc/init.d/mysqld

为直接使用mysql命令添加mysql环境变量

# vim /etc/profile

45 PATH=$PATH:/usr/local/cmake/bin:/usr/local/mysql/bin

给数据库创建用户和密码

# mysqladmin -u root -p password 123456

登录

# mysql -u root –p

Enter password:

使系统能够正确找到lib文件,我们需要给它指定正确的lib路径,创建一个mysql.conf在里面写入lib的路径/usr/local/mysql/bin,并对ld.so.cache文件刷新

# vim /etc/ld.so.conf.d/mysql.conf

加入下面内容

/usr/local/mysql/bin

# ldconfig(刷新)

再给头文件做一个链接

# ln -s /usr/local/mysql/include /usr/include/mysql

安装php

# tar -jxvf php-5.4.13.tar.bz2 -C /usr/local/src/

# cd /usr/local/src/ php-5.4.13

# ./configure --prefix=/usr/local/php --sysconfdir=/etc --with-apxs2=/usr/local/apache/bin/apxs --with-zlib --with-gd --with-jpeg-dir --with-png-dir --enable-mbstring --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-xml --with-freetype-dir --enable-xml

# Make && make install

添加php的环境路径:

# vim /etc/profile

指定php的lib文件路径

# vim /etc/ld.so.conf.d/php.conf

加入以下内容

/usr/local/php/lib

# ldconfig(更新)

为头文件建立链接

# cd /usr/local/php

# ln -s include /usr/include/php

为了让apache能够处理一些php网页,我们要加入一些模块,向httpd.conf文件内加入语句

# vim /etc/httpd/httpd.conf

147 LoadModule php5_module modules/libphp5.so

148 AddType application/x-httpd-php .php .phtml

246 <IfModule dir_module>

247 DirectoryIndex index.html index.php

248 </IfModule>

更改web主站点路径到挂载目录,并创建虚拟主机头

213 DocumentRoot "/var/www/website"

514 <Virtualhost 192.168.110.13:80>

515 DocumentRoot /var/www/website

516 ServerName www.zzdx.com

517 ErrorLog logs/tec_error_log

518 CustomLog logs/tec_access_log combined

519 </VirtualHost>

# service httpd restart

stoping httpd......ok

starting apache.......ok

 

2.2.2.Zend加速php

# tar -zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz

# cd ZendOptimizer-3.3.0a-linux-glibc21-i386

# ./install

安装过程如图2-2-2-1至图2-2-2-7

clip_image029

图2-2-2-1

clip_image030

图2-2-2-2

clip_image031

图2-2-2-3

指定zend的安装路径

clip_image010[1]

图2-2-2-4

指定zend配置文件安装路径

clip_image032

图2-2-2-5

clip_image014[1]

图2-2-2-6

指定apachectl的路径

clip_image033

图2-2-2-7

 

2.2.3.安装snmp软件包及相关组件

使监测服务器能够正常监控web服务器

# cd /mnt/cdrom/Server/

# rpm -ivh net-snmp-5.3.2.2-7.el5.i386.rpm

# yum install net-snmp-utils-5.3.2.2-7.el5.i386.rpm

 

2.2.4.添加虚拟端口并更改系统控制文件

添加虚拟端口并配置路由,web服务器回应客户端时使用虚拟端口

# ifconfig lo:0 192.168.110.1 broadcast 192.168.110.1 netmask 255.255.255.255

# route add -host 192.168.110.1 dev lo:0

更改系统控制文件,在接收arp请求时不给予回应以防冲突

# vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_announce = 2

 

2.2.5.挂载NFS资源到本地

# vim /etc/fstab

加入下面代码

192.168.110.10:/usr/local/nginx/html/website /var/www/website nfs rw,soft,intr 0 0

 

3.Director服务器配置

为实现Director关键业务的高可用性,使用高可用性群集HA来完成Director服务器的搭建,HA群集采用主从模式

3.1.准备工作

heartbeat-2.1.4-11.el5.i386.rpm

openhpi-libs-2.14.0-5.el5.i386.rpm

heartbeat-pils-2.1.4-11.el5.i386.rpm

perl-MailTools-2.04-1.el5.rf.noarch.rpm

heartbeat-stonith-2.1.4-11.el5.i386.rpm

perl-TimeDate-1.16-5.el5.noarch.rpm

libnet-1.1.5-1.el5.i386.rpm

heartbeat-ldirectord-2.1.4-11.el5.i386.rpm

3.2.软件安装

所有上述软件都放在/heartbeat目录下

# cd heart/

# yum localinstall ./* --nogpgcheck

这样安装省了很多事,系统会自动解决依赖关系,但是读者还要记着安装完成之后查询一下heartbeat到底产生了哪些文件

其中/usr/share/doc/heartbeat-2.1.4/目录下就存放了heartbeat的样例配置文件

3.3.修改相关配置文件

3.3.1.主服务器配置

接下来的工作是修改主机名,Heartbeat依靠服务器的主机名来识别服务器,因此使用hostname命令得到的结果必须与uname -n 结果保持一致。

# vim /etc/sysconfig/network //修改主机名称;

HOSTNAME=primary.zzdx.com

# hostname primary.zzdx.com

# vim /etc/hosts //修改主机地址映射;

192.168.110.6 primary.zzdx.com primary

192.168.110.7 standby.zzdx.com standby

# cd /etc/ha.d/

# cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./

# cp /usr/share/doc/heartbeat-2.1.4/authkeys ./

# cp /usr/share/doc/heartbeat-2.1.4/haresources ./

# cp /usr/share/doc/heartbeat-2.1.4/heartbeat-ldirectord-2.1.4/ldirectord.cf ./ldirectord-192.168.110.1.cf //ldirectord的配置文件

# vim ha.cf //定义各节点之间Heartbeat进程如何通信;

debugfile /var/log/ha-debug //设置调试日志文件名

logfile /var/log/ha-log //设置其他日志文件名

keepalive 2 //设定heartbeat之间的时间间隔为2秒;

deadtime 30 //在30秒后宣布节点死亡;

warntime 10 //在日志中发出late heartbeat警告之前等待的时间,单位为秒;

udpport 694 // 使用端口694进行bcast和ucast通信,默认参数;

bcast eth1 //在eth1接口上使用广播heartbeat-”心跳”;

node primary.zzdx.com //定义节点;

node standby.zzdx.com //定义节点;

# dd if=/dev/urandom bs=512 count=1 | openssl md5 //生成节点间域共享密钥;

14df2a6b5b26b510e7d5d5b16b7cc10b

# vim authkeys //定义心跳探测包使用哪种加密方式;

auth 1

1 sha1 14df2a6b5b26b510e7d5d5b16b7cc10b

# chmod 600 authkeys //仅允许管理员修改文件;

# vim haresources //定义资源;文件给出了相应的格式

primary.zzdx.com IPaddr::192.168.110.1/28/eth0/192.168.110.15 ldirectord::ldirectord-192.168.110.1.cf

# vim ldirectord-192.168.110.1.cf //定义director规则

# Global Directives

checktimeout=10 // ldirectord 等待Realserver 健康检查完成的时间,单位为秒;任何原因的检查错误或超过此时间限制,ldirector 将会将此Realserver 从IPVS 表中移除;

checkinterval=2 // 每次检查的时间间隔,即检查的频率;

autoreload=no //定义ldirectord 是否定期每隔一段时间检查此配置文件是否发生改变并自动重新加载此文件;

logfile="/var/log/ldirectord-192.168.110.1.log" //日志文件存放位置;

quiescent=yes //当某台Real Server 出现异常,此项可将其设置为静默状态(即其权重为0)从而不再响应客户端的访问请求;

virtual=192.168.110.1:80 // 定义LVS 服务及其使用的VIP 和PORT;

real=192.168.110.12:80 gate 1 // 定义Real Server;

real=192.168.110.13:80 gate 3 //定义Real Server;

fallback=127.0.0.1:80 gate // 当IPVS 表没有任何可用的Realserver 时,

此“地址:端口”作为最后响应的服务。一般指向127.0.0.1,并可以通过一个包含错误信息的页面通知用户服务发生了异常;

service=http // 基于http 服务来测试Real Server;

request=".test.html" //测试请求页面;

receive="OK" //测试接收字符;

scheduler=wlc //定义调度算法;

 

3.3.2.standby 服务器的配置

从服务器的主机名称为standby.zzdx.com,安装heartbeat的方法同主服务器一致。/etc/hosts文件、Heartbeat、ldirectord的配置文件也必须与主机保持一致。因此这里采用将primary上的配置文件直接远程复制过来的方法:

# cd /etc/ha.d/

# scp 192.168.110.6:/etc/ha.d/ha.cf ./

# scp 192.168.110.6:/etc/ha.d/authkeys ./

# scp 192.168.110.6:/etc/ha.d/haresources ./

# scp 192.168.110.6:/etc/ha.d/ldirectord-192.168.110.1.cf ./

# chmod 600 authkeys

 

3.3.3.在primary和standby服务器上分别启动heartbeat服务

# service heartbeat start

测试部分小编就不做啦,发现自己最近一阶段非常的懒啊,呵呵,整个一个架构下来相信读者对于群集技术已经有所了解啦,如果还想知道更多,那就需要自己动手好好去摸索一下啦….



本文转自 chenming421  51CTO博客,原文链接:http://blog.51cto.com/wnqcmq/1212446

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
消息中间件 Kubernetes Java
构建高性能微服务架构:从理论到实践
【2月更文挑战第24天】 在当今快速发展的数字化时代,微服务架构已成为软件开发领域的关键趋势。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、技术选型和性能优化策略。我们将通过实际案例分析,揭示微服务架构在提高可伸缩性、容错性和维护性方面的优势,并讨论在实施过程中可能遇到的挑战及其解决方案。
|
1月前
|
数据库 Android开发 开发者
构建高性能微服务架构:从理论到实践构建高效Android应用:探究Kotlin协程的优势
【2月更文挑战第16天】 在当今快速迭代和竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性和独立部署能力而受到企业的青睐。本文将深入探讨如何构建一个高性能的微服务系统,涵盖从理论基础到具体实现的各个方面。我们将重点讨论服务拆分策略、通信机制、数据一致性以及性能优化等关键主题,为读者提供一个清晰、实用的指南,以便在复杂多变的业务环境中构建和维护健壮的微服务体系结构。 【2月更文挑战第16天】 在移动开发领域,性能优化和流畅的用户体验是至关重要的。随着技术的不断进步,Kotlin作为一种现代编程语言,在Android开发中被广泛采用,尤其是其协程特性为异步编程带来了革命性的改进。本文旨在深入
241 5
|
4月前
|
Kubernetes Java 微服务
Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构
Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构
295 0
|
1月前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
10天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。
|
20天前
|
消息中间件 监控 API
构建高性能微服务架构:从理论到实践
【4月更文挑战第4天】 在当今互联网应用的快速迭代和高并发需求下,传统的单体应用架构已不足以满足市场的灵活性与扩展性要求。微服务架构以其独立部署、弹性伸缩、技术多样性等优势,成为众多企业转型升级的首选方案。本文将深入探讨如何构建一个高性能的微服务系统,涵盖关键组件的选择、系统设计的考量以及性能优化的策略,旨在为开发者和架构师提供一套实用的指导思路和具体实践步骤。
|
1月前
|
缓存 负载均衡 数据库
构建高性能微服务架构:后端开发的终极指南
【2月更文挑战第30天】 随着现代应用程序向微服务架构的转型,后端开发者面临着提高系统性能、确保可靠性和易于维护性等挑战。本文深入探讨了构建高性能微服务的策略,包括服务拆分、数据库优化、缓存机制以及负载均衡等关键技术。通过实际案例分析与最佳实践分享,我们旨在为后端开发人员提供一套全面的指导方针,帮助其在不断变化的技术环境中保持竞争力。
|
1月前
|
存储 Kubernetes 固态存储
IEEE HPCA 2024|LightPool:高性能、轻量级的存储池化架构
IEEE HPCA 2024|LightPool:高性能、轻量级的存储池化架构
|
1月前
|
消息中间件 缓存 数据库
构建高性能微服务架构:后端开发的进阶之路
【2月更文挑战第30天】 在当今互联网技术迅速发展的背景下,传统的单体应用已经难以满足日益增长的业务需求。微服务架构以其灵活性、可扩展性和容错性成为解决复杂系统问题的有效方案。本文将探讨如何构建一个高性能的微服务架构,包括关键技术选型、系统设计原则以及性能优化实践,旨在为后端开发人员提供一条提升系统处理能力和稳定性的进阶路径。
|
1月前
|
消息中间件 敏捷开发 运维
构建高性能微服务架构:策略与实践
【2月更文挑战第27天】 在当今快速迭代和持续部署的软件发展背景下,微服务架构因其灵活性、可扩展性和技术异构性的优势而成为众多企业的首选架构模式。然而,随之而来的复杂性管理和性能优化问题也不容忽视。本文深入探讨了构建高性能微服务架构的策略与实践,包括服务拆分原则、通信机制、数据一致性保障以及监控和故障处理等方面。通过分析具体案例和最佳实践,旨在为开发者提供一个清晰、高效的微服务性能优化路径。