搭建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