zhu894532094 发表于 2019-1-6 15:49:10

lmp+heartbeat+drbd

  ############源码安装mysq######
  # tar zxf mysql-boost-5.7.11.tar.gz
  # yum install cmake-2.8.12.2-4.el6.x86_64.rpm
  # yum install gcc-c++ ncurses-devel bison -y
  
  # cd 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
  chownroot.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
  yumgcc 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 usernginx nginx;
  2 worker_processesauto;
  3 worker_cpu_affinity 1;
  #####进程个数一般跟cpu个数相同如果是两个则为worker_processes 01 10;三个001 010 100(cpu个数信息用lscpu查看)
  nginx -t   检查语法错误
  Nginx启动服务
  在真机上输入安装nginx主机的ip地址
  
  
  
https://s3.运维网.com/wyfs02/M01/8F/35/wKioL1jX1KTiREAiAADO4BJvWVI891.png-wh_500x0-wm_3-wmp_4-s_3870142119.png
  
  
  
  
  ############源码安装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
  
  # cp php.ini-production /usr/local/lnmp/php/etc/php.ini
  # cd /usr/local/lnmp/php/etc/
  # cp php-fpm.conf.default php-fpm.conf
  # cd /root/php-5.6.20/sapi/fpm/
  # cp init.d.php-fpm /etc/init.d/php-fpm
  # chmod +x /etc/init.d/php-fpm
  # cd /usr/local/lnmp/php/etc/
  # vim php-fpm.conf
  取消25行的注释pid = run/php-fpm.pid
  # 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_indexindex.php;
   75             fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
   76             include      fastcgi.conf;
  
  nginx -t
   vim /usr/local/nginx/html/index.php
  
  
  
  vim /usr/local/lnmp/php/etc/php.ini
  mysql.default_socket = /var/lib/mysql/mysql.sock    ##三行socket都改
  重新加载php
  测试
https://s1.运维网.com/wyfs02/M02/8F/35/wKioL1jX1MKx9n1mAAGLrKGGzyw187.png-wh_500x0-wm_3-wmp_4-s_2466105797.png
  
  
  ##############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
https://s5.运维网.com/wyfs02/M00/8F/37/wKiom1jX1NGxSZyeAACkVy--cfo584.png-wh_500x0-wm_3-wmp_4-s_513033750.png
  
  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 primaryexample --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
https://s2.运维网.com/wyfs02/M02/8F/35/wKioL1jX1NvBxoSjAACR03UdJSA742.png-wh_500x0-wm_3-wmp_4-s_2001047890.png
  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:
https://s1.运维网.com/wyfs02/M00/8F/35/wKioL1jX1OOxDhrGAADwgEGuiRk938.png-wh_500x0-wm_3-wmp_4-s_396186957.png
  
  drbdadm secondary example
  etc/init.d/heartbeat start
  
  Server2
  drbdadm primary example
https://s5.运维网.com/wyfs02/M00/8F/35/wKioL1jX1OyTThHFAAED2TuXvg4022.png-wh_500x0-wm_3-wmp_4-s_1592881757.png
  
  搭建论坛
  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
  按照步骤即可完成安装
  
  




页: [1]
查看完整版本: lmp+heartbeat+drbd