首页 > 代码库 > 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软件包安装与配置:#########################
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 root@172.25.45.2:/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 * 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/
启动服务
在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 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