日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

综合实验:LVS+LAMP+NFS+MySQL读写分离

發布時間:2024/1/8 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 综合实验:LVS+LAMP+NFS+MySQL读写分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 客戶端配置
  • 路由器配置
  • 配置powerDNS
  • 防火墻
  • 107~109:mysql主從半同步復制
  • 106:布署ProxySQL
  • 105:NFS配置
  • 105:布署wordpress
  • 104:webB安裝apache+php
  • 103:webA安裝apache+php
  • LVS實現web服務的負載均衡

實驗環境:12臺虛擬機


客戶端配置

  • 網絡配置:僅主機模式1
    cat /etc/sysconfig/network-scripts/ifcfg-ens33
  • TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=f297f992-f824-4489-890c-e237ea9c4a9f DEVICE=ens33 ONBOOT=no IPADDR=192.168.88.100 PREFIX=24 GATEWAY=192.168.88.254 DNS1=172.16.23.211

    路由器配置

    用Linux虛擬機模擬

  • 一個僅主機模式1,一個橋接網卡
  • 網絡配置
  • [路由器]$ ip a #下面是輸出 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e1:fc:ac brd ff:ff:ff:ff:ff:ffinet 192.168.88.254/24 brd 192.168.88.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::6a7a:d4a:a7ed:75b5/64 scope link noprefixroutevalid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e1:fc:b6 brd ff:ff:ff:ff:ff:ffinet 172.16.23.254/16 brd 172.16.255.255 scope global noprefixroute eth1valid_lft forever preferred_lft foreverinet6 fe80::9a8a:1c56:7288:a4ca/64 scope link noprefixroutevalid_lft forever preferred_lft forever
  • 開啟ip轉發
  • echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf

    查看

    [路由器]$ sysctl -p net.ipv4.ip_forward = 1
  • 開啟SNAT
  • [路由器]$ iptables -t nat -A POSTROUTING -s 192.168.88.0/24 ! -d 192.168.88.0/24 -j SNAT --to-source 172.16.23.254

    配置powerDNS

    IP: 172.16.23.211

  • 安裝包:基于EPEL源
  • yum install -y pdns pdns-backend-mysql
  • 安裝http + php + mariadb
  • yum -y install httpd php php-mysql php-mbstring mariadb-server
  • 啟動服務
  • systemctl start httpd systemctl start mariadb
  • 配置PowerDNS使用mariadb作為后臺數據存儲
  • #查找到包含launch= 的行,修改并添加下面的內容 [powerDNS]$ vim /etc/pdns/pdns.conf #大概在250行 launch=gmysql gmysql-host=localhost gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=123
  • 創建數據庫和帳號給powerDNS用
  • [powerDNS]$ mysqlMariaDB [(none)]> create database powerdns; MariaDB [(none)]> grant all privileges on powerdns.* to powerdns@localhost identified by "123";
  • 對,又是5
  • 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);
  • 啟動服務
  • systemctl start pdns systemctl enable pdns
  • 安裝httpd和php相關包
  • 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
  • 啟動服務
  • systemctl restart httpd
  • 下載poweradmin程序,
  • cd /var/www/html wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
  • 解壓縮到相應目錄
  • tar xvf poweradmin-2.1.7.tgz mv poweradmin-2.1.7 poweradmin

    設置下權限

    setfacl -Rm u:apache:rwx poweradmin
  • 訪問下面地址,啟動PowerAdmin的網頁安裝向導:
    http://172.16.23.211/poweradmin/install/
    選英語,下一步。下一步

  • 提供先前配置的數據庫詳情,同時為Poweradmin設置管理員密碼


  • 為Poweradmin創建一個受限用戶
  • 標題說明
    UsernamePowerAdmin用戶名
    Password上述用戶的密碼
    Hostmaster創建SOA記錄指定默認主機管理員
    Primary nameserver主域名服務器
    Secondary namesever輔域名服務器


  • 按照下面頁面說明,在數據庫中創建用戶并授權,然后再下一步
  • 示例(根據你自己的):

    [powerDNS]$ mysqlMariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE ON powerdns.* TO 'poweradmin'@'localhost' IDENTIFIED BY '123';
  • 按下面頁面說明,修改config.in.php文件內容,注意不要復制我的,不要復制我的,看你自己的
  • [powerDNS]$ mv poweradmin/inc/config-me.inc.php poweradmin/inc/config.inc.php[powerDNS]$ vim /var/www/html/poweradmin/inc/config.inc.php18 $db_host = 'localhost';19 $db_port = '3306';20 $db_user = 'powerdns';21 $db_pass = '123';22 $db_name = 'powerdns';23 $db_type = 'mysql'; ...26 $db_layer = 'PDO'; # or MDB2 ...30 $session_key = 'gKB$t5Qx%l!%$d+M~T$Hv+lABp$nNKKRe{7v}W3SMO0=kN'; ...34 $iface_lang = 'en_EN'; ...43 $dns_hostmaster = 'powerserver';44 $dns_ns1 = '192.168.99.101';45 $dns_ns2 = '192.168.99.101';
  • 安裝完畢后,刪除install目錄
  • [powerDNS]$ rm -rf /var/www/html/poweradmin/install/
  • 登錄http://powerdns服務器IP/poweradmin/
  • username:admin password:123

    這里如果登錄不了提示:Error: You have to install PHP mcrypt extension
    解決:

    vim /etc/httpd/conf.modules.d/10-php.conf ...5 <IfModule prefork.c>6 LoadModule php5_module modules/libphp5.so7 LoadModule php5_module modules/mcrypt.so8 </IfModule>
  • 來添加個zone

  • list zone,準備給這個zone添加記錄

  • 添加A記錄,指向172.16.23.200

  • 查看,直接search就可以

  • 看,這就有條記錄了。

  • 防火墻

    外網IP:172.16.23.200
    內網IP:192.168.99.101

  • 配置轉發
  • [防火墻]# vim /etc/sysctl.conf net.ipv4.ip_forward=1 [防火墻]# sysctl -P
  • 配置DNAT
  • iptables -t nat -A PREROUTING -d 172.16.23.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.99.100

    107~109:mysql主從半同步復制

    主機:192.168.99.107~109

    107~109主機上都安裝

  • 直接yum安裝吧
  • yum -y install mariadb-server
  • 啟動
  • systemctl start mariadb systemctl enable mariadb
    主服務器:192.168.99.107
  • 修改配置文件
  • vim /etc/my.cnf[mysqld]#加這2條server_id=107log_bin
  • 重啟服務
  • systemctl restart mariadb
  • 創建帳號用于復制
  • [主mysql]$ mysqlMariaDB [(none)]> grant replication slave on *.* to repluser@'%' identified by '123';
    從服務器1:192.168.99.108
  • 修改配置文件
  • [從1]$ vim /etc/my.cnf[mysqld]server_id=108read_only
  • 重啟服務
  • systemctl restart mariadb
  • 連接到主服務器
  • [從1]$ mysqlMariaDB [(none)]> change master to master_host='192.168.99.107', master_user='repluser', master_password='123', master_port=3306, master_log_file='mariadb-bin.000001', master_log_pos=0;
  • 啟動slave
  • MariaDB [(none)]> start slave ;
  • 查看是否連接上
  • MariaDB [(none)]> show slave status\G; *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.99.107Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mariadb-bin.000001Read_Master_Log_Pos: 386Relay_Log_File: mariadb-relay-bin.000002Relay_Log_Pos: 672Relay_Master_Log_File: mariadb-bin.000001Slave_IO_Running: YesSlave_SQL_Running: Yes ...
    從服務器2:192.168.99.109
  • 修改配置文件
  • [從2]$ vim /etc/my.cnf[mysqld]server_id=109read_only
  • 重啟服務
  • systemctl restart mariadb
  • 連接到主服務器
  • [從2]$ mysqlMariaDB [(none)]> change master to master_host='192.168.99.107', master_user='repluser', master_password='123', master_port=3306, master_log_file='mariadb-bin.000001', master_log_pos=0;
  • 啟動slave
  • MariaDB [(none)]> start slave ;
  • 查看是否啟動成功
  • MariaDB [(none)]> show slave status\G; *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.99.107Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mariadb-bin.000001Read_Master_Log_Pos: 386Relay_Log_File: mariadb-relay-bin.000002Relay_Log_Pos: 672Relay_Master_Log_File: mariadb-bin.000001Slave_IO_Running: YesSlave_SQL_Running: Yes ...
    主服務器:192.168.99.107
  • 在主服務器上安裝主服務器的插件
  • MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
  • 啟用這個插件
  • MariaDB [(none)]> set global rpl_semi_sync_master_enabled=on;
    從服務器1:192.168.99.108
  • 從服務器安裝的插件不太一樣,看
  • MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
  • 啟用它
  • MariaDB [(none)]> set global rpl_semi_sync_slave_enabled=on;
  • 設置完還得重啟線程
  • MariaDB [(none)]> stop slave; MariaDB [(none)]> start slave;
    從服務器2:192.168.99.109
  • 跟107一樣
  • MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
  • 啟用它
  • MariaDB [(none)]> set global rpl_semi_sync_slave_enabled=on;
  • 設置完還得重啟線程
  • MariaDB [(none)]> stop slave; MariaDB [(none)]> start slave;
    主服務器:192.168.99.107
  • 回到主服務器上看,已經有2個線程了
  • MariaDB [(none)]> SHOW GLOBAL STATUS LIKE '%semi%'; +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | Rpl_semi_sync_master_clients | 2 | ...
  • 給wordpress創建帳號用
  • MariaDB [(none)]> create database wpdb; MariaDB [(none)]> grant all privileges on wpdb.* to wpuser@'192.168.99.%' identified by "123";
  • 創建帳號給ProxySQL監控用
  • MariaDB [(none)]> grant replication client on *.* to monitor@'192.168.99.%' identified by '123';
  • 創建帳號用來ProxySQL訪問的(沒寫錯,這里真的還是4)
  • MariaDB [(none)]> grant all on *.* to sqluser@'%' identified by '123';

    106:布署ProxySQL

    proxySQL:192.168.99.106
  • 安裝前還得配置下官方的yum源
    要不就自行下載安裝:https://github.com/sysown/proxysql/releases
  • [106]$ vim /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxySQL YUM repository baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever gpgcheck=1 gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key
  • 安裝proxySQL
  • yum clean all yum install proxysql
  • 啟動proxySQL
  • systemctl start proxysql
  • 登錄前你還需要
  • yum -y install mariadb
  • 登錄到proxysql試試
  • mysql -uadmin -padmin -P6032 -h127.0.0.1

    連接成功,簡單看看

    MySQL [(none)]> show databases; +-----+---------------+-------------------------------------+ | seq | name | file | +-----+---------------+-------------------------------------+ | 0 | main | | | 2 | disk | /var/lib/proxysql/proxysql.db | | 3 | stats | | | 4 | monitor | | | 5 | stats_history | /var/lib/proxysql/proxysql_stats.db | +-----+---------------+-------------------------------------+
  • 添加你的3臺MySQL主機
  • MySQL > insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.99.107',3306);MySQL > insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.99.108',3306);MySQL > insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.99.109',3306);
  • 添加上了,可以看看
  • MySQL > select * from mysql_servers; +--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ | hostgroup_id | hostname | port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment | +--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ | 10 | 192.168.99.107 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | | | 20 | 192.168.99.108 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | | | 20 | 192.168.99.109 | 3306 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | | +--------------+----------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
  • 當然,這2步少不了。加載并保存到磁盤
  • MySQL > load mysql servers to runtime;MySQL > save mysql servers to disk;
  • 添加監控后端節點的用戶。
  • MySQL [(none)]> set mysql-monitor_username='monitor'; MySQL [(none)]> set mysql-monitor_password='123';
  • 加載到RUNTIME,并保存到disk
  • MySQL [(none)]> load mysql variables to runtime; MySQL [(none)]> save mysql variables to disk;
  • 查看監控連接是否正常的 (對connect指標的監控):(如果connect_error的結果為NULL則表示正常,看最后2條)
  • MySQL [(none)]> select * from mysql_server_connect_log; +----------------+------+------------------+-------------------------+-------------------------------------------------------------------------+ | hostname | port | time_start_us | connect_success_time_us | connect_error | +----------------+------+------------------+-------------------------+-------------------------------------------------------------------------+ ... | 192.168.99.107 | 3306 | 1564319683112439 | 3277 | NULL | | 192.168.99.108 | 3306 | 1564319683641071 | 3359 | NULL | | 192.168.99.109 | 3306 | 1564319684169766 | 1197 | NULL | +----------------+------+------------------+-------------------------+-------------------------------------------------------------------------+
  • 也可以查看監控心跳信息 (對ping指標的監控)(如果ping_error的結果為NULL則表示正常)
  • MySQL> select * from mysql_server_ping_log;
  • 還有其它的,查看read_only和replication_lag的監控日志
  • MySQL> select * from mysql_server_read_only_log; MySQL> select * from mysql_server_replication_lag_log;

    設置分組信息

  • 需要修改的是main庫中的mysql_replication_hostgroups表,該表有3個字段:writer_hostgroup寫組,reader_hostgroup讀組,comment備注, 指定寫組的id為10,讀組的id為20
  • MySQL> insert into mysql_replication_hostgroups values(10,20,"test");
  • 加載到RUNTIME生效并保存
  • MySQL> load mysql servers to runtime; MySQL> save mysql servers to disk;
  • Monitor模塊監控后端的read_only值,按照read_only的值將節點自動移動到讀/寫組
  • MySQL> select hostgroup_id,hostname,port,status,weight from mysql_servers; +--------------+----------------+------+--------+--------+ | hostgroup_id | hostname | port | status | weight | +--------------+----------------+------+--------+--------+ | 10 | 192.168.99.107 | 3306 | ONLINE | 1 | | 20 | 192.168.99.108 | 3306 | ONLINE | 1 | | 20 | 192.168.99.109 | 3306 | ONLINE | 1 | +--------------+----------------+------+--------+--------+
  • 在ProxySQL配置,將用戶sqluser添加到mysql_users表中, default_hostgroup默認組設置為寫組10,當讀寫分離的路由規則不符合時,會訪問默認組的數據庫
  • MySQL> insert into mysql_users(username,password,default_hostgroup) values('sqluser','123',10);MySQL> insert into mysql_users(username,password,default_hostgroup) values('wpuser','123',10);
  • 保存生效
  • MySQL> load mysql users to runtime; MySQL> save mysql users to disk;
  • 使用sqluser用戶測試是否能路由到默認的10寫組實現讀、寫數據。是的,我的寫組就是主服務器,也就是server_id=2的主機。
  • [proxySQL]$ mysql -usqluser -p123 -P6033 -h127.0.0.1 -e 'select @@server_id' +-------------+ | @@server_id | +-------------+ | 106 | +-------------+

    在proxysql上配置路由規則,實現讀寫分離

    與規則有關的表:mysql_query_rules和mysql_query_rules_fast_routing,后者是前者的擴展表,1.4.7之后支持
    插入路由規則:將select語句分離到20的讀組,select語句中有一個特殊語句SELECT…FOR UPDATE它會申請寫鎖,應路由到10的寫組

  • 可以這樣寫
  • #先進入 [proxySQL]$ mysql -uadmin -padmin -P6032 -h127.0.0.1MySQL> insert into mysql_query_rules (rule_id,active,match_digest,destination_hostgroup,apply)VALUES (1,1,'^SELECT.*FOR UPDATE$',10,1),(2,1,'^SELECT',20,1);
  • 保存生效
  • MySQL> load mysql query rules to runtime; MySQL> save mysql query rules to disk;

    注意:因ProxySQL根據rule_id順序進行規則匹配,select … for update規則的rule_id必須要小于普通的select規則的rule_id

  • 看下生效了沒,已經有了2條記錄了
  • MySQL [(none)]> select rule_id,active,match_digest,destination_hostgroup,apply from mysql_query_rules; +---------+--------+----------------------+-----------------------+-------+ | rule_id | active | match_digest | destination_hostgroup | apply | +---------+--------+----------------------+-----------------------+-------+ | 1 | 1 | ^SELECT.*FOR UPDATE$ | 10 | 1 | | 2 | 1 | ^SELECT | 20 | 1 | +---------+--------+----------------------+-----------------------+-------+

    到這里就可以實現讀寫分離了

    在這里強調下:
    (1)進入proxySQL管理界面是:mysql -uadmin -padmin -P6032 -h127.0.0.1,端口號是:6032,默認的帳號密碼是admin和admin。
    (2)如果使用mysql -usqluser -p123 -P6033 -h127.0.0.1則訪問的是主服務器上的數據庫了。


    105:NFS配置

    主機:192.168.99.105
  • 安裝
  • [NFS]$ yum install -y nfs-utils
  • 配置
  • [NFS]$ mkdir /data/wordpress[NFS]$ vim /etc/exports /data/wordpress 192.168.99.0/24(rw,all_squash,anonuid=997,anongid=995)#加載 [NFS]$ exportfs -r
  • 啟動服務
  • [NFS]$ systemctl restart nfs-server
  • 創建用戶
  • [NFS]$ groupadd -g 995 apache [NFS]$ useradd -r -u 997 -g 995 -s /sbin/nologin apache

    105:布署wordpress

    192.168.99.105
    這是在NFS服務器
  • 下載
  • [NFS]$ cd [NFS]$ wget ftp://192.168.99.1/Magedu37/files/lamp/wordpress-5.0.3-zh_CN.tar.gz
  • 解壓
  • [NFS]$ tar xf wordpress-5.0.3-zh_CN.tar.gz -C /data/
  • 刪除包
  • [NFS]$ rm -f wordpress-5.0.3-zh_CN.tar.gz [NFS]$ chown -R apache.apache /data/wordpress/

    104:webB安裝apache+php

    主機:192.168.99.104
  • 在主機104上安裝php和httpd
  • [http]$ yum -y install php httpd php-mysql php-mbstring
  • 修改配置文件
  • [http]$ vim /etc/httpd/conf.d/test.conf<virtualhost *:80>documentroot /data/wordpressservername blog.jibill.com<directory /data/wordpress>require all granted</directory> </virtualhost>
  • 重啟服務
  • [http]$ systemctl restart httpd
  • 安裝nfs-utils準備掛載nfs
  • [http]$ yum -y install nfs-utils [http]$ mkdir /data/wordpress [http]$ mount 192.168.99.105:/data/wordpress /data/wordpress
  • 來測試下。注意下方多圖預警
    先用hosts文件添加192.168.99.104測試,
    可以修改hosts文件
  • vim /etc/hosts192.168.99.104 blog.jibill.com







    103:webA安裝apache+php

    主機:192.168.99.103
  • 在主機103上安裝php和httpd
  • [httpA]$ yum -y install php httpd php-mysql php-mbstring
  • 修改配置文件
  • [httpA]$ vim /etc/httpd/conf.d/test.conf<virtualhost *:80>documentroot /data/wordpressservername blog.jibill.com<directory /data/wordpress>require all granted</directory> </virtualhost>
  • 重啟服務
  • [httpA]$ systemctl restart httpd
  • 安裝nfs-utils準備掛載nfs
  • [httpA]$ yum -y install nfs-utils [httpA]$ mkdir /data/wordpress [httpA]$ mount 192.168.99.105:/data/wordpress /data/wordpress

    LVS實現web服務的負載均衡

  • 設置路由
  • [LVS]$ ip route del default via 192.168.99.2[LVS]$ ip route add default via 192.168.99.101
  • 安裝ipvsadm
  • [LVS]$ yum -y install ipvsadm
  • 設置回環網卡地址
  • [LVS]$ ip a a 192.168.99.100 dev lo
  • 配置LVS
  • [LVS]$ ipvsadm -A -t 192.168.99.100:80 -s wrr[LVS]$ ipvsadm -a -t 192.168.99.100:80 -r 192.168.99.103 -g -w 1[LVS]$ ipvsadm -a -t 192.168.99.100:80 -r 192.168.99.104 -g -w 1

    下面2個設置在webA和webB上都要配置
    4. 設置webA和webB的路由和arp設置

    ip route del default via 192.168.99.2 ip route add default via 192.168.99.101
  • 配置103和104(web服務A和B),記得,2個主機都要這么配
  • echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ip a a 192.168.99.100 dev lo
    192.168.88.100
  • 訪問blog.jibill.com/成功
  • 總結

    以上是生活随笔為你收集整理的综合实验:LVS+LAMP+NFS+MySQL读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。