1. 程式人生 > >搭建PowerDNS+LAP+NFS+MySQL主從半節點同步實現LAMP架構

搭建PowerDNS+LAP+NFS+MySQL主從半節點同步實現LAMP架構

實驗環境:(共7臺機器)

      PowerDNS: 192.168.99.110
         兩臺LAP: 192.168.99.120 和 192.168.99.130
      NFS伺服器:192.168.99.140
      MySQL:主節點:192.168.99.150
         從節點B:192.168.99.160 和192.168.99.170

拓撲圖:

實驗步驟:

一、先搭建MySQL主從半節點99.150、160和170

在主節點上150操作

1、先修改配置檔案內容新增server-id和bin-log

[root@centos7 ~]#vim /etc/my.cnf
[mysqld]
server-id=150
log-bin
[root@centos7 ~]#systemctl start mariadb

 2、檢視主節點的pos位置點並建立從節點複製同步時使用的使用者賬號

MariaDB [(none)]> show master status;
MariaDB [(none)]> grant replication slave on *.* to repluser@'%' identified by '123';

 兩個從節點:160,170同樣的操作

1、在配置檔案中新增各自的server-id號,然後向主節點使用剛剛建立的複製賬號進行同步操作

[root@centos7 ~ ]#vim /etc/my.cnf
[mysqld]
server-id=160
#啟動MySQL資料庫

  2、使用複製賬號向主節點同步,然後檢視同步的狀態

MariaDB [(none)]> change master to 
master_host='192.168.99.150',
master_user='repluser',
master_password='123',
master_port=3306,
master_log_file='mariadb-bin.000001',
master_log_pos=245;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\G

 看到兩個執行緒狀態為Yes就表示此時已經同步成功了

 

170機器同樣的操作

3、下面配置實現半同步操作:安裝外掛

主節點150:

①安裝主節點使用master端的外掛

MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
MariaDB [(none)]> show plugins;
...
| rpl_semi_sync_master    | ACTIVE   | REPLICATION    | semisync_master.so | GPL     |
+--------------------------------+----------+--------------------+--------------------
#檢視節點的啟用狀態
MariaDB [(none)]> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | OFF   |
| rpl_semi_sync_master_timeout       | 10000 |    #其中:timeout這個引數是指同步超時時間
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+

 ② 啟用master端的外掛

MariaDB [(none)]> set global rpl_semi_sync_master_enabled=on;
#檢視一下是否啟用
MariaDB [(none)]> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |

 ③ 兩個從節點160和170同樣的操作:

安裝slave端的外掛:

④ 安裝slave端使用的半同步外掛,然後啟動外掛並檢視確認

MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
#檢視下外掛的狀態,此時並沒有啟動,enabled為OFF
MariaDB [(none)]> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | OFF   |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
#啟用外掛
MariaDB [(none)]> set global rpl_semi_sync_slave_enabled=on;
#再次檢視狀態
MariaDB [(none)]> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |    #狀態為 ON 已啟用
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
#外掛啟用完了還需要重新啟動slave的執行緒
MariaDB [(none)]> stop slave; 
MariaDB [(none)]> start slave; 

 

⑤ 回到主節點機器99.150上檢視外掛的狀態,此時應該是有兩個客戶端了

MariaDB [(none)]> SHOW GLOBAL STATUS LIKE '%semi%';
+--------------------------------------------+--------+
| Variable_name                              | Value  |
+--------------------------------------------+--------+
| Rpl_semi_sync_master_clients               | 2      |   #客戶端數量為 2
.....

 4、在主節點150主節點中先建立一個wordpress網站用的賬號,等會需要使用

MariaDB [(none)]> create database wpdb;
MariaDB [(none)]> grant all privileges on wpdb.* to wpuser@'192.168.99.%' identified by "xu";

 

二、部署搭建PowerDNS

1、在99.110機器上操作

#安裝軟體包
   yum install -y pdns pdns-backend-mysql    (epel源裡的包)
[root@centos7 ~]#yum -y install httpd php php-mysql php-mbstring
[root@centos7 ~]#systemctl start httpd

 2、需要在資料庫中建立相應的庫和表

#進入資料庫中建立相應的庫和表
MariaDB [(none)]> CREATE DATABASE powerdns;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'192.168.99.110' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| powerdns           |
| test               |
+--------------------+
5 rows in set (0.00 sec)
USE powerdns;
CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT DEFAULT NULL,
  account               VARCHAR(40) DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (
  id                    BIGINT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);
CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;

CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) NOT NULL,
  comment               VARCHAR(64000) NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);


CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);

CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB;

CREATE INDEX domainidindex ON cryptokeys(domain_id);

CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

 

3、回到99.110機器上操作

   在powerdns的配置檔案中新增PowerDNS使用mariadb作為後臺資料儲存

#查詢到包含launch= 的行,修改並新增下面的內容
vim /etc/pdns/pdns.conf    # 250行
launch=gmysql   
gmysql-host=192.168.99.150   #MySQL資料庫的IP
gmysql-port=3306   #埠
gmysql-dbname=powerdns  #資料庫名
gmysql-user=powerdns    #使用者
gmysql-password=123  #密碼
# 啟動pdns服務
systemctl start pdns
systemctl enable pdns

4、安裝httpd和php相關包

[root@centos7 ~]# yum -y install php-devel php-gd php-mcrypt php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mcrypt php-mhash gettext 
#重啟httpd服務
[root@centos7 ~]# systemctl start httpd

 5、在網站的根目錄內下載poweradmin程式,

[root@centos7 ~]# cd /var/www/html
[root@centos7 html]# ls
[root@centos7 html]# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

 6、解壓壓縮包並重命名

 tar xf poweradmin-2.1.7.tgz
 mv poweradmin-2.1.7 poweradmin

 7、一會需要安裝powerdns可能需要有寫的許可權,可以使用facl設定許可權,方便撤銷

 [root@centos7 html]# setfacl -Rm u:apache:rwx poweradmin

 8、使用瀏覽器訪問httpd的powerdns頁面進行安裝:

    http://192.168.99.110/poweradmin/install/

第一步:選擇語言,然後繼續

 

第二步:這是第一次安裝,點繼續下一步

 

第三步:提示輸入資料庫的連線資訊

 

第四步:填寫powerdns的使用者名稱和密碼,還有域名,主域名伺服器和從域名伺服器,目前只有一臺

 

第五步:提示需要在資料庫中給某個使用者授予相應的許可權,根據提示在資料庫中操作即可

 

 第六步:按照提示修改powerdns的配置檔案即可,先重新命名一個新檔案

[root@centos7 poweradmin]#cp inc/config-me.inc.php inc/config.inc.php 
[root@centos7 poweradmin]#vim inc/config.inc.php
<?php

$db_host        = '192.168.99.150';
$db_user        = 'powerdns';
$db_pass        = '123';
$db_name        = 'powerdns';
$db_type        = 'mysql';
$db_layer       = 'PDO';

$session_key        = '}6!}-]pDYxRpWzPMrI18bUKQ*b@Dza}5mD4)&n1MlMB+F6';

$iface_lang     = 'en_EN';

$dns_hostmaster     = 'master.peter.com';
$dns_ns1        = '192.168.99.110';
$dns_ns2        = '192.168.99.110';

第七步:安裝完成,並要求從Poweradmin根目錄中刪除install 否則無法登陸

 如果不刪除就不讓登陸,我們刪除目錄後重新登入

[root@centos7 poweradmin]#pwd
/var/www/html/poweradmin
[root@centos7 poweradmin]#\rm -rf install/

 刪除後再次進行登入,然後輸入使用者名稱密碼登入

 1、新增一個主域

 

2、新增主域的資訊,然後新增即可

3、點選域列表可以檢視剛剛新增的主域資訊,我們點編輯,新增一會要部署的wordpress部落格站點的

 

3、新增一個A記錄內容欄位填寫web1的IP地址然後新增即可,同樣操作再新增一條記錄指向另一臺web伺服器99.130

4、新增完之後可以點查詢,輸入域名看是否可以檢視剛剛新增的兩條記錄

檢視結果

三、配置NFS伺服器

下面開始配置NFS,在主機99.140上操作

1、安裝nfs軟體

 yum install -y nfs-utils

2、新增配置檔案

 [root@centos7 ~]#vim /etc/exports
 /data/wordpress 192.168.99.0/24(rw,all_squash,anonuid=997,anongid=995)
 #啟動nfs服務
 [root@centos7 ~]systemctl start nfs-server

3、建立網站使用的使用者

 groupadd -g 995 apache
 useradd -r -u 997 -g 995 -s /sbin/nologin apache

4、部署wordpress網站,解壓壓縮包到本地的/data/目錄並設定許可權

 tar xf wordpress-5.0.3-zh_CN.tar.gz -C /data/   
 rm -f wordpress-5.0.3-zh_CN.tar.gz
 chown -R apache.apache /data/wordpress/

四、部署兩臺LAP並在本地NFS掛載

下面開始在120、130兩臺機子上部署LAP,先在120機器上安裝apache和PHP,這裡 使用yum安裝,原始碼編譯同樣操作

1、安裝包

[root@centos7 ~]# yum -y install php httpd php-mysql php-mbstring

2、修改httpd的配置檔案

[root@centos7 ~]# vim /etc/httpd/conf.d/vhost.conf
 <virtualhost *:80>
     documentroot /data/wordpress
     servername www.peter.com
     <directory /data/wordpress>
         require all granted
     </directory>
 </virtualhost>
 #啟動服務
 [root@centos7 ~]# systemctl start httpd

 4、安裝nfs-utils掛載nfs共享目錄

 [root@centos7 ~]# yum -y install nfs-utils
 # 建立掛載的目錄
 [root@centos7 ~]# mkdir /data/wordpress
 # 把共享的wordpress目錄掛載到本地的/data/wordpress
 [root@centos7 ~]# mount 192.168.99.140:/data/wordpress /data/wordpress
# 啟動httpd服務
[root@centos7 ~]# systemctl start httpd

 此時網站的目錄已經通過nfs掛載到本地的目錄了,然後從瀏覽器進行訪問登入

先安裝好一個,使用瀏覽器測試一下(我這裡使用的是windows訪問所以需要配置一下hosts檔案,才可以使用域名直接訪問,也可以直接使用IP進行訪問)

下面就可以安裝網站了

 

 資料庫和使用者再之前已經建立好了,這裡直接使用即可

 

填寫完 點選安裝即可

填寫web站點的資訊,然後安裝

 安裝完成

此時wordpress部落格已經搭建好, 可以正常使用了

 

 另一臺LAP機器配置完直接掛載到本地的沒了即可,不需要在進行網站配置了

 

以上就是LAMP的詳細步驟

&n