首页 > 代码库 > lmp+heartbeat+drbd

lmp+heartbeat+drbd

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

[root@server25 ~]# tar zxf mysql-boost-5.7.11.tar.gz

[root@server25 ~]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm

[root@server25 ~]# yum install gcc-c++ ncurses-devel bison -y

 

[root@server25 ~]# cd mysql-5.7.11/

[root@server25 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 root@localhost 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

 

[root@server25 php-5.6.20]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini

[root@server25 php-5.6.20]# cd /usr/local/lnmp/php/etc/

[root@server25 etc]# cp php-fpm.conf.default php-fpm.conf

[root@server25 etc]# cd /root/php-5.6.20/sapi/fpm/

[root@server25 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm

[root@server25 fpm]# chmod +x /etc/init.d/php-fpm

[root@server25 fpm]# cd /usr/local/lnmp/php/etc/

[root@server25 etc]# vim php-fpm.conf

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

[root@server25 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软件包安装与配置:#########################

Server1server2上同时做

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 root@172.25.45.2:/etc/ha.d/

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

5./etc/init.d/heartbeat start(server1server2都执行

 

#################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 * root@172.25.38.2:/root/

ssh root@172.25.38.2 ‘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/

 

启动服务

server1server2上同时执行

drbdadm create-md example

/etc/init.d/drbd start

 

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

demo 主机server1执行以下命令

drbdadm primary  example --force

 

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

server1server2上同时执行

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 root@172.25.45.2:/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  

按照步骤即可完成安装

 


lmp+heartbeat+drbd