lmp+heartbeat+drbd

############源码安装mysq######

[[email protected] ~]# tar zxf mysql-boost-5.7.11.tar.gz

[[email protected] ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm

[[email protected] ~]# yum install gcc-c++ ncurses-devel bison -y

[[email protected] ~]# cd mysql-5.7.11/

[[email protected] mysql-5.7.11]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/

vim ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

source ~/.bash_profile

cp /etc/my.cnf /etc/my.cnf .bak

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

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

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

cd /usr/local/lnmp/mysql/

chown mysql.mysql . -R

mysqld --initialize --user=mysql --basedir=/usr/local/lnmp/mysql/ --datadir=/usr/local/lnmp/mysql/data

chown  root.root . -R

chown mysql.mysql ./data/  -R

etc/init.d/mysqld start

mysql -p

Alter user [email protected] identified by ‘Westos007’

############源码安装nginx######

tar zxf nginx-1.10.1.tar.gz

cd nginx-1.10.1

yum  gcc install prce-devel zlib-devel openssh-devel -y

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

vim /root/nginx-1.10.1/auto/cc/gcc

178 # debug

179 #CFLAGS="$CFLAGS -g"

vim /root/nginx-1.10.1/src/core/nginx.h

12 #define nginx_version      1010001

13 #define NGINX_VERSION      "1.10.1"

14 #define NGINX_VER          "nginx/"   ##隐藏版本信息

cd /root/nginx-1.10.1

make && make install

useradd -u 900 nginx -s /sbin/nologin 创建一个用户适合于该用户

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

vim /usr/local/nginx/conf/nginx.conf

1 user  nginx nginx;

2 worker_processes  auto;

3 worker_cpu_affinity 1;

#####进程个数一般跟cpu个数相同如果是两个则为worker_processes 01 10;三个001 010 100(cpu个数信息用lscpu查看)

nginx -t   检查语法错误

Nginx  启动服务

在真机上输入安装nginx主机的ip地址

############源码安装php#####

tar jxf php-5.6.20.tar.bz2

cd php-5.6.20

yum install -y gcc gcc-c++ net-snmp-devel curl-devel libxml2-devel libpng-devel libjpeg-devel freetype-devel gmp-devel openldap-devel

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc

--with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir -without-pear --with-gettext --with-gmp--enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-ftp-group=nginx --with-mcrypt --with-mhash --with-mysql --with-mysqli --with-pdo-mysql --enable-mysqlnd

make && make install

[[email protected] php-5.6.20]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini

[[email protected] php-5.6.20]# cd /usr/local/lnmp/php/etc/

[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf

[[email protected] etc]# cd /root/php-5.6.20/sapi/fpm/

[[email protected] fpm]# cp init.d.php-fpm /etc/init.d/php-fpm

[[email protected] fpm]# chmod +x /etc/init.d/php-fpm

[[email protected] fpm]# cd /usr/local/lnmp/php/etc/

[[email protected] etc]# vim php-fpm.conf

取消25行的注释  pid = run/php-fpm.pid

[[email protected] etc]# vim php.ini

修改时区   date.timezone = ‘/Asisa/Shanghai‘

/etc/init.d/php-fpm start

cd /usr/local/nginx/sbin/

Ls

vim ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

source ~/.bash_profile

vim /usr/local/nginx/conf/nginx.conf

49         location / {

50             root   html;

51             index   index.php index.html index.htm;

52    } ###调整优先级先看index.php

71         location ~ \.php$ {

72             root           html;

73             fastcgi_pass   127.0.0.1:9000;

74             fastcgi_index  index.php;

75             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

76             include        fastcgi.conf;

nginx -t

vim /usr/local/nginx/html/index.php

<?php

phpinfo()

?>

vim /usr/local/lnmp/php/etc/php.ini

mysql.default_socket = /var/lib/mysql/mysql.sock    ##三行socket都改

重新加载php

测试

##############3Heartbeat+drbd+mysql

三个部分分别提供了高可用‘数据库、以及存储服务器。将之后的论坛整合成一个完整的体系

1.数据库 两台都做

yum install mysql-server -y

mysql_secure_installation  初始化密码。

########################heartbeat软件包安装与配置:#########################

Server1和server2上同时做

Yum install *.rpm -y

rpm -q heartbeat -d

cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/ -p

cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/ -p

cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/ -p

在server1上执行

3.修改配置文件

cd /etc/ha.d/

主配置文件(/etc/ha.d/ha.cf)://打开或添加以下项

logfile /var/log/ha-log//系统运行日志文件,取默认值

logfacility     local0//日志等级,取默认值

keepalive 2//心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒

deadtime 30//节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定

warntime 10//发出警告时间,自己设定

initdead 60守护进程首次启动后应该等待60秒后再启动主服务器上的资源

udpport 694//心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和ucast 通信,取默认值

bcast   eth0            # Linux//采用 udp 广播播来通知心跳

auto_failback on//当主节点恢复后,是否自动切回

node server1.example.com//主节点名称,与 uname –n 保持一致。排在第一的默认为主节点,所以不要搞措顺序

node server2.example.com//副节点名称,与 uname –n 保持一致

ping 172.25.45.250

respawn hacluster /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

//默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。

所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。

可以通过 ipfail 插件,设置‘ping nodes‘来解决这一问题,但不能使用一个集群节点作为

ping 的节点。

2) 资源文件(/etc/ha.d/haresources)//添加以下项

server1.example.com IPaddr::172.25.45.100/24/eth0 drbddisk::example Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld

3)认证文件(/etc/ha.d/authkeys),文件的权限必须是 600:

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello!

4)chmod 600 authkeys

scp authkeys ha.cf haresources [email protected]:/etc/ha.d/

注意server2上的authkeys文件的权限也要是600

5./etc/init.d/heartbeat start(server1和server2都执行

#################drbd

主机:demo 172.25.45.1server1.example.com /dev/vdb (附加磁盘)

remote 172.25.45.2server2.example.com/dev/vdb (附加磁盘)  4G

所需软件包

drbd-8.4.2.tar.gz

Server1上执行

1) yum install gcc flex rpm-build kernel-devel -y//解决软件依赖性

rpmbuild ~ //在家目录生成 rpmbuild 编译所需路径

cp drbd-8.4.0.tar.gz rpmbuild/SOURCES/

tar zxf drbd-8.4.0.tar.gz

cd drbd-8.4.0

./configure --enable-spec --with-km

rpmbuild -bb drbd.spec//编译生成 drbd rpm 包

rpmbuild -bb drbd-km.spec //编译 drbd 内核模块

cd ~/rpmbuild/RPMS/x86_64

rpm -ivh *

2) 拷贝生成的 rpm 包到另一主机,并安装软件包:

scp * [email protected]:/root/

ssh [email protected] ‘rpm -ivh /root/drbd-*.rpm‘

2.配置drbd

Server1上执行

编辑配置文件

vim /etc/drbd.d/example.res

2) scp example.res 172.25.45.2:/etc/drbd.d/

启动服务

在server1和server2上同时执行

drbdadm create-md example

/etc/init.d/drbd start

将 demo 设置为 primary 节点,并同步数据:

在 demo 主机server1执行以下命令

drbdadm primary  example --force

在两台主机上查看同步状态:

在server1和server2上同时执行

watch cat /proc/drbd

等待同步完成

Server1:

Mount  /dev/drbd1  /mnt/

cd /mnt/

rm -fr *

umount /mnt/

mount /dev/drbd1 /var/lib/mysql/

chown mysql.mysql /var/lib/mysql/ -R

umount /var/lib/mysql/

vim /etc/ha.d/haresources

scp /etc/ha.d/haresources [email protected]:/etc/ha.d/

/etc/init.d/heartbeat start

Server2:

/etc/init.d/heartbeat start

Server1:

drbdadm secondary example

etc/init.d/heartbeat start

Server2

drbdadm primary example

搭建论坛

unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/nginx/html/

cd /usr/local/nginx/html/upload

chmod 777 config/

chmod 777 data  -R

chmod 777 uc_* -R

cd /usr/local/lnmp/mysql/

chmod 755 data/

Server1上设置root用户可以远程登陆的权限

Grant all privileges on *.* to “root”@”%” identified by “redhat”;

测试方法

在装php的那台主机测试远程登陆172.25.45.100这个ip的数据库并且这个库中有解的权限即可

浏览器上输入172.25.45.1/upload

按照步骤即可完成安装

时间: 2024-10-12 13:33:32

lmp+heartbeat+drbd的相关文章

Heartbeat+DRBD实现文件高可用

一.需求分析: 本文结合之前heartbeat与drbd两篇文章,实现磁盘文件高可用.当MySQL01(主数据库服务器)宕机后,MySQL02(备数据库服务器)可以通过heartbeat立刻检测到MySQL01挂了,MySQL02接管VIP,MySQL02的DRBD服务会自动从Secondary切换到Primary状态,然后自动加载DRBD逻辑盘:/dev/drbd0到/data目录,从而实现文件持续在线--即高可用状态:当MySQL01恢复后,VIP返回MySQL01,MySQL01的DRBD

Heartbeat+Drbd+NFS高可用实现

继续之前的操作,来完成heartbeat+drbd+nfs高可用的实现. heartbeat+drbd还是使用原来的环境即可,然而需要添加一台nfs客户端,客户端的信息如下: 主机名 IP地址 角色 server136.contoso.com 192.168.49.136 nfs客户端 一.环境准备 1)注意:因为我的客户端是192.168.49.0/24端,所以这里需要把VIP改为这个网段,所以先修改两个节点的haresources文件,将VIP修改为192.168.49.100.可以根据实际

Heartbeat+Drbd+Mysql主从高可用实现

在上一篇中已经实现了MySQL服务的高可用,MySQL的数据目录放在drbd的共享目录中,并且只有获取到heartbeat资源的VIP才能挂载共享目录,从而启动MySQL服务,但是两端的数据使用drbd同步,保证发生故障时,服务和资源能够从一个节点切换到另外一个节点,下面是一个简略的架构图: 对于MySQL服务,一般在生产环境中都要做主从结构,从而保证数据的完整性,所以这次要在这个架构的前提下,在两个heartbeat节点下再部署一台MySQL从库,而主库是heartbeat集群中的一台(主库的

Heartbeat+Drbd+MySQL高可用

一.环境介绍 继续使用之前heartbeat+drbd+nfs的环境,192.168.49.0/24网段用来ssh远程连接,172.16.49.0/24用来做心跳连接,并且也做drbd同步数据使用.因为中间做了好多改变,这里再次给出环境的配置情况. 主机名 角色 IP地址 heartbeat01.contoso.com heartbeat+drbd+mysql(节点1) eth0:192.168.49.133 eth1:172.16.49.133 heartbeat02.contoso.com

Heartbeat+DRBD+MySQL高可用方案

Heartbeat+DRBD+MySQL高可用方案 =============================================================================== 概述: =============================================================================== 方案介绍  1.方案介绍及优缺点 ★方案介绍 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数

heartbeat+drbd+mysql

配置heartbeat接管drbd服务 配置heartbeat接管drbd服务(延续之前heartbeat及drbd博文内容) 1.两端确认都建立好 /data目录 2.关闭drbd服务,关闭heartbeat服务,自启动全部关闭 3.两端配置haresources data-1-1 IPaddr::192.168.0.191/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext3 启动顺序 1.依次启动主备端drbd 2.drbd置

ysql+heartbeat+DRBD+LVS实现mysql高可用

在企业应用中,mysql+heartbeat+DRBD+LVS是一套成熟的集群解决方案,通过heart+DRBD实现mysql的主 节点写操作的高可用性,而通过mysql+LVS实现数据库的主从复制和mysql的读操作的负载均衡.整个方案在读写方面进行了分离,融合了写操作的高 可用和读操作的负载均衡,是一个完美又廉价的企业应用解决方案 目前流行的高可用解决方案: mysql的复制功能是通过建立复制关系和两台和多台机器环境中,一台机器出现故障切换到另一台机器上保证一定程度的可用性 mysql的复制

15、 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

15. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 参考自:http://oldboy.blog.51cto.com/2561410/1240412 heartbeat和keepalived应用场景及区别 很多网友说为什么不使用keepalived而使用长期不更新的heartbeat,下面说一下它们之间的应用场景及区别: 1.对于web,db,负载均衡(lvs,haproxy,nginx)等,heartbeat和keepalived都可以实现 2.lvs最好和keepa

heartbeat+DRBD+mysql+haproxy

heartbeat+DRBD+mysql主要实现mysql主的单点故障 haproxy实现mysql从的负载均衡 具体的测试的架构图和IP设置