中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CentOS 6.5上安裝MySQL-Cluster 7.3.4的過程

發布時間:2021-09-16 16:14:23 來源:億速云 閱讀:118 作者:chen 欄目:MySQL數據庫

本篇內容主要講解“CentOS 6.5上安裝MySQL-Cluster 7.3.4的過程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“CentOS 6.5上安裝MySQL-Cluster 7.3.4的過程”吧!

環境說明:CentOS6.5 + MySQL-Cluster 7.3.4(最新GA版本),規劃2臺機器,一臺做控制服務器+負載均衡服務器+數據節點服務器, 另一臺做負載均衡服務器+數據節點服務器;


一、下載,這里為了方便安裝過程,這里直接使用了RPM包來安裝,避開了編譯安裝的痛苦:
 首先先到www.msyql.com下載如下的RPM安裝包 (http://dev.mysql.com/downloads/cluster/),記得選擇RedHat Enterprise Linux/Oracle Linux下面的 MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar 這個安裝包,避免一個接一個下載的痛苦;

二、環境清理以及安裝:
1. mysql舊版本清除:
  首先使用如下命令來清理之前操作系統自帶的mysql安裝:yum -y remove mysql
然后使用如下命令:
rpm -qa | grep mysql*
對于找到的2個剩余mysql包,請按照如下的命令格式予以刪除:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

2. mysql cluster版本安裝準備:將MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar放到某個目錄下(譬如/package) 下面,并且執行如下命令解壓:
tar -xvf MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar
得到如下文件清單:
MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-devel-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-embedded-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-shared-compat-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-shared-gpl-7.3.4-1.el6.x86_64.rpm
 MySQL-Cluster-test-gpl-7.3.4-1.el6.x86_64.rpm

 3. mysql cluster版本安裝:
  創建文件夾(分如下3個類來創建對應的文件夾)
  存儲節點:mkdir /var/lib/mysql/data
    管理節點:mkdir /var/lib/mysql-cluster    SQL節點:可不用  文件夾授權
  進程DIR:    mkdir /var/run/mysqld             
 
  使用如下的命令來變更權限保證可寫入:
  chmod -R 1777 /var/lib/mysql
    chmod -R 1777 /var/run/mysqld
    chmod -R 1777 /var/lib/mysql-cluster

    rpm -ivh MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
    rpm -ivh MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm
特別注意,當安裝完畢server gpl包后,將出現如下提示信息,提醒我們整個cluster安裝后的初次超級賬戶密碼存在/root/.mysql_secret這個文件當中。
------------------------------------------------------------------------------------------------------
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
 You will find that password in '/root/.mysql_secret'.
 You must change that password on your first connect,
 no other statement but 'SET PASSWORD' will be accepted.
 See the manual for the semantics of the 'password expired' flag.
 Also, the account for the anonymous user has been removed.
 In addition, you can run:
  /usr/bin/mysql_secure_installation
 which will also give you the option of removing the test database.
 This is strongly recommended for production servers.
 -----------------------------------------------------------

 4. 配置文件撰寫與調整:
 cd /var/lib/mysql-cluster
 vim config.ini
 -----------------------------------------------------------------------------------------------------
 [computer]
 Id=mgr-server-01
 HostName=10.10.0.1

 [mgm default]
 datadir=/var/lib/mysql-cluster

 [mgm]
 HostName=10.10.0.1
 NodeId=60
 ExecuteOnComputer=mgr-server-01
 PortNumber=1186
 ArbitrationRank=2

 [ndbd default]
 NoOfReplicas=2
 DataMemory=8G
 IndexMemory=2G

 [ndbd]
 HostName=10.10.0.1
 DataDir=/var/lib/mysql
 NodeId=1

 [ndbd]
 HostName=10.10.0.2
 DataDir=/var/lib/mysql
 NodeId=2

 [mysqld]
 HostName=10.10.0.1
 NodeId=81

 [mysqld]
 HostName=10.10.0.2
 NodeId=82
 -----------------------------------------------------------------------------------------------------

5.  配置Mysql文件:
vim /etc/my.cnf
 [client]
 socket=/var/lib/mysql/mysql.sock

 [mysqld]
 max_connections=100
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 ndbcluster
 ndb-connectstring=10.10.0.1

 [mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid

 [mysql_cluster]
 ndb-connectstring=10.10.0.1
 -----------------------------------------------------------------------------------------------------


三、SQL Cluster初次啟動命令以及用戶密碼更改調整:(請嚴格按照次序啟動)
 執行初次啟動前請先確認 將兩臺機器的防火墻關閉(service iptables stop 或者 設定 防火墻端口可通,兩個端口即通訊端口1186、數據端口3306 )
初次啟動mgt console命令:ndb_mgmd -f /var/lib/mysql-cluster/config.ini
啟動均衡節點命令: ndbd --initial
啟動數據節點命令:mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
注意在啟動過程中需要監測整個控制臺輸出,發現有錯誤信息需要及時解決,根據錯誤日志內容來解決。
------------------------------------------------------------------------------------------------------
如果一起正常,使用如下命令將Management console開啟:  ndb_mgm
輸入: show
 ndb_mgm> show
 Cluster Configuration
 -----------------------------------------------------------------------------------------------------
 [ndbd(NDB)]    2 node(s)
 id=1    @10.x.0.1  (mysql-5.6.15 ndb-7.3.4, Nodegroup: 0, *)
 id=2    @10.x.0.2  (mysql-5.6.15 ndb-7.3.4, Nodegroup: 0)

 [ndb_mgmd(MGM)] 1 node(s)
 id=60  @10.x.0.1  (mysql-5.6.15 ndb-7.3.4)

 [mysqld(API)]  2 node(s)
 id=81  @10.x.0.1  (mysql-5.6.15 ndb-7.3.4)
 id=82  @10.x.0.2  (mysql-5.6.15 ndb-7.3.4)
 -----------------------------------------------------------------------------------------------------
修正密碼:
 當mysqld 啟動完畢正常后(可以使用pgrep mysqld來獲取進程ID),我們可以使用如下命令修改:
mysql -u root -p;
隨機密碼(具體請參見/root/.mysql_secret文件獲取),進入后使用如下指令修改密碼:
SET PASSWORD = PASSWORD('新密碼');
幾臺裝有SQL數據節點的服務器皆需要執行一遍上述命令;
------------------------------------------------------------------------------------------------------


四、Cluster效果測試:
 使用mysql -u root -p 密碼;
輸入對應的密碼后登陸到系統,按照如下命令開始新建database;
 create database clustertest;
 use clustertest;
 CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;
特別注意,只有使用了NDBCluster引擎的表才會執行同步操作,因此特別需要在上述表加入這個后綴;


五、關閉Cluster:(需要嚴格按照次序執行)
關閉數據節點:mysqld stop  (SQL節點可以用mysqladmin shutdown或別的方式關閉。)
在管理節點上執行:shell> ndb_mgm -e shutdown
將安全的關閉管理節點和數據節點。

關閉后使用如下的進程檢測命令查看一下是否退出來了:
pgrep mysqld
ps aux | grep nbdb
如果沒有,找到對應的pid進行kill 操作即可。

六、再次啟動Cluster方案:
啟動整個cluster的次序:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
 ndbd
 mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
 -----------------------------------------------------------------------------------------------------
雜記:
防火墻策略調整: iptables -A INPUT -s 192.168.100.0/24 -i eth3 -p tcp -m tcp -j ACCEPT
修改密碼方法一:
mysqladmin -u root password root (更改密碼)                    (沒有新密碼前執行)
mysqladmin -u root -p 'xxxxxx' password 'NewPassword';  (安裝完畢后啟動mysqld執行)

修改密碼方法二:
UPDATE mysql.user SET Password=PASSWORD('Password01!') WHERE User='root';
FLUSH PRIVILEGES;

修改密碼方法三:
讓mysql以不帶安全控制的方式啟動:
mysqld_safe --user=mysql --skip-grant-tables --skip-networking;
然后再用前面2種方法修改密碼;

注:下文涉及到配置的,如無特別說明,主備機則一致!
一、環境介紹
1、這是我CentOS的版本,CentOS7.1,主備都為該版本
[root@localhost ~]# cat /etc/RedHat-release
CentOS Linux release 7.1.1503 (Core)
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015

2、修改主機名并修改host
[root@localhost ~]# hostnamectl set-hostname node-01
[root@localhost ~]# vi /etc/hosts
127.0.0.1node-01在127后面添加node-01

二、拓撲圖的規劃:
A)
|------------IP地址-----------------|----------|------軟件----------|----------|-狀態--|
|172.21.4.51(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Master |
|172.21.4.52(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Backup|
|---------172.21.4.91-------------|----------|------IIS------------|----------|-Web1-|
|---------172.21.4.91-------------|----------|------IIS------------|----------|-Web2-|
B)
Internet--
        |
    ============= 
    | ISP Router|
    =============
        |                               |
        |                               |---- Web1 (172.21.4.91)
        |-HA-|eth0--> 172.21.4.51               |
        |             \                 /
        |              \               /
        |               ===VIP(172.21.4.44)===
        |              /               \
        |             /                 \
        |-HA-|eth0--> 172.21.4.52               |
                                       |---- Web2 (172.21.4.92)
                                       |
注:在網關上已針對VIP(172.21.4.44)作了80端口映射。
此架構需考慮的問題:
1、Master運行,則Master占有vip且Nginx能夠正常服務;
2、Master掛了,則Backup搶占vip且Nginx能夠正常服務;
3、任何一臺前端nginx服務掛了,則vip資源轉移到另一臺服務器上,并發送提醒郵件;
4、nginx需要檢測后端服務器的健康狀態(由于應用是掛在默認網站下的虛擬目錄,且無法更改,必須能夠對虛擬目錄進行健康檢查)
5、由于應用需要Session保持,但由于沒有做Session共享,實際服務器角色轉換時,應用會受到一定的影響。

三、安裝前的準備工作
CentOS7環境下,默認是使用FireWallD服務,即使你修改了iptables,重啟又被初始化了,需要再 次手動systemctl restart  iptables.service才能使設置的iptables生效,由于FireWallD暫時還沒有熟悉使用方法且不知道他比iptables到底有 哪些優勢,保險起見,還是換回原先的iptables

1、關閉firewall:
[root@node-01 ~]# systemctl stop firewalld.service
#停止firewall
[root@node-01 ~]# systemctl disable firewalld.service 或 systemctl mask firewalld.service
#禁止firewall開機啟動

2、安裝iptables防火墻
[root@node-01 ~]# yum install iptables-services -y
[root@node-01 ~]# systemctl enable iptables

3、在進行Keepalived和nginx配置前,務必將集群內的幾臺主機的通訊相互完全放行(并開放80的Web訪問規則),否則很有可能出現腦裂或其他問題,可直接在配置文件內加入以下語句;
[root@node-01 ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -s 172.21.4.51 -j ACCEPT
-A INPUT -s 172.21.4.52 -j ACCEPT
-A INPUT -s 172.21.4.91 -j ACCEPT
-A INPUT -s 172.21.4.92 -j ACCEPT

[root@node-01 ~]# systemctl restart iptables.service

四、Keepalived與Nginx的安裝
1、安裝ipvsadm
[root@node-01 ~]# yum install ipvsadm
[root@node-01 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
ipvs(IP Virtual Server)是整個負載均衡的基礎,如果沒有這個基礎,故障隔離與失敗切換就毫無意義了。ipvs 具體實現是由 ipvsadm 這個程序來完成的。CentOS7.1默認自帶安裝了。

2、安裝keepalived(其實7.1自帶了)
[root@node-01 ~]# yum install keepalived
[root@node-01 ~]# keepalived -v
Keepalived v1.2.13 (03/06,2015)

3、安裝當前最新穩定版1.8.0
注1:一開始是用yum安裝的nginx,結果發現后端服務器Down機或狀態不正常時,nginx也照常轉發請求,后面yum erase nginx后,進行了手動安裝。因為需要額外添加 nginx_upstream_check_module模塊。
注2:安裝過程會提示類型這樣的錯誤 ./configure: error: the HTTP rewrite module requires the PCRE library.
所以先安裝相應的支持庫來解決。pcre,正則表達式匹配支持;zlib,用于壓縮等等。
[root@node-01 ~]# yum -y install gcc-c++ pcre-devel zlib-devel

1) 為nginx建立一個www組,并建立一個不登錄的賬戶nginx,放入www用戶組
[root@node-01 ~]# groupadd -f www
[root@node-01 ~]# useradd -d /var/cache/nginx -s /sbin/nologin -g www nginx
2) 建立目錄用于存放nginx日志文件,并賦權限
[root@node-01 ~]# mkdir /var/log/nginx
[root@node-01 ~]# mkdir /usr/local/nginx
[root@node-01 ~]# chown -R nginx.www /var/log/nginx
[root@node-01 ~]# chown -R nginx.www /usr/local/nginx

3) 分別下載nginx、額外模板及安裝
[root@node-01 ~]# mkdir /nginx
[root@node-01 ~]# cd /nginx
[root@node-01 nginx]# wget http://nginx.org/download/nginx-1.8.0.tar.gz
[root@node-01 nginx]# wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
[root@node-01 nginx]# tar -xvf nginx-1.8.0.tar.gz
[root@node-01 nginx]# unzip master.zip
#在當前目錄下解壓出nginx_upstream_check_module-master這個目錄

[root@node-01 nginx]# cd nginx-1.8.0/
[root@node-01 nginx-1.8.0]# patch -p1 < /nginx/nginx_upstream_check_module-master/check_1.7.5+.patch
#由于安裝版1.8.0穩定版,所以選check_1.7.5+.patch這個補丁包,其他版本相應選擇即可
#如果提示bash: patch: 未找到命令...應該安裝一下patch命令包yum -y install patch

[root@node-01 nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=www --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --add-module=/nginx/nginx_upstream_check_module-master
[root@node-01 nginx-1.8.0]# make && make install

便于以后的操作,進行以下設置并制作自啟動文件:
[root@node-01 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
[root@node-01 ~]# vi /usr/lib/systemd/system/nginx.service
#加下以下內容:
#---------Begin------------------------------------
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
#---------end--------------------------------------

[root@node-01 /]# systemctl enable nginx.service
系統啟動時讓nginx.service自啟動。

4) keepalived和Nginx最好也設置開機啟動
[root@node-01 ~]# systemctl enable keepalived
[root@node-01 ~]# systemctl enable nginx

五、Keepalived配置
在配置keepalived之前,先關閉selinux
A、vi /etc/selinux/config
B、設置 SELINUX=disabled 保存
C、執行  setenforce 0
如果只想臨時關閉,直接輸入:setenforce 0
[root@node-01 ~]# vi /etc/keepalived/keepalived.conf
#############keepalived配置#############################################################

! Configuration File for keepalived

global_defs {
}

vrrp_script chk_nginx {
#必須放在track代碼的上方,否則無效,測試了幾次是這個情況

   script "killall -0 nginx"
   #用shell命令檢查nginx服務是否存在

   interval 1
   #時間間隔為1秒檢測一次

   weight -15
   #當nginx的進程不存在了,就把當前的權重-15
}

vrrp_instance VI_1 {
    state MASTER
    #主LVS是MASTER,從主機時此項要改為BACKUP,要大寫

    interface enp4s0
    #LVS監控的網絡接口

    virtual_router_id 51
    #同一實例下virtual_router_id必須相同,MASTRE/BACKUP 設置值要一樣

    priority 100
    #定義優先級,數字越大,優先級越高,把此份Conf拷貝到另一臺機器上時,設置的priority值要比MASTRE權重值低

    advert_int 1
    #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒

    authentication {
        auth_type PASS
        auth_pass 376879148
        #驗證類型和密碼,有PASS和AH兩種,一般用PASS,據說AH有問題,認證密碼主備服務器之間一定要一致,否則出錯
    }

    virtual_ipaddress {
        172.21.4.44
        #設置虛擬IP,可以有多個地址,每個地址占一行,不需掩碼。注意:這個 ip 必須與我們在 lvs 客戶端設定的vip相一致
    }

   track_script {
        chk_nginx
        #引用上面的vrrp_script定義的腳本名稱
        }

  notify_master "/etc/keepalived/changemail.py master"
  notify_backup "/etc/keepalived/changemail.py backup"
  notify_fault "/etc/keepalived/changemail.py fault"
  #指定當切換到主、備及故障狀態時,執行的腳本
}

###################################################################################

六、HA狀態切換時的郵件提醒
[root@node-02 ~]# python -V
Python 2.7.5
[root@node-01 ~]# vi /etc/keepalived/changemail.py

########################changemail.py利用Python2.7程序發郵件###########################

#!/usr/bin/python 
# -*- coding: UTF-8 -*-     
import smtplib 
import socket
import time
from email.MIMEText import MIMEText 
from email.Utils import formatdate 
from email.Header import Header 
import sys

#發送郵件的相關信息,根據實際情況填寫 
smtpHost = 'smtp.exmail.qq.com'
smtpPort = '25'
sslPort  = '465'
fromMail = 'youki@appi.com'
toMail   = 'youki@appi.com'
username = 'youki@appi.com'
password = 'xxxxxxx'
#解決中文問題 
reload(sys) 
sys.setdefaultencoding('utf8') 
 
#郵件標題和內容 
subject  = socket.gethostname() + " HA status has changed"
body     = (time.strftime("%Y-%m-%d %H:%M:%S")) + " vrrp transition, " + socket.gethostname() + " changed to be " + sys.argv[1]
 
#初始化郵件 
encoding = 'utf-8' 
mail = MIMEText(body.encode(encoding),'plain',encoding) 
mail['Subject'] = Header(subject,encoding) 
mail['From'] = fromMail 
mail['To'] = toMail 
mail['Date'] = formatdate() 
 
try: 
    #連接smtp服務器,明文/SSL/TLS三種方式,根據你使用的SMTP支持情況選擇一種 
    #普通方式,通信過程不加密 
    #smtp = smtplib.SMTP(smtpHost,smtpPort)
    #smtp.ehlo() 
    #smtp.login(username,password) 
 
    #tls加密方式,通信過程加密,郵件數據安全,使用正常的smtp端口 
    #smtp = smtplib.SMTP(smtpHost,smtpPort) 
    #smtp.ehlo() 
    #smtp.starttls() 
    #smtp.ehlo() 
    #smtp.login(username,password) 
 
    #純粹的ssl加密方式,通信過程加密,郵件數據安全 
    smtp = smtplib.SMTP_SSL(smtpHost,sslPort) 
    smtp.ehlo() 
    smtp.login(username,password) 
 
    #發送郵件 
    smtp.sendmail(fromMail,toMail,mail.as_string()) 
    smtp.close() 
    print 'OK' 
except Exception: 
    print 'Error: unable to send email'
[root@node-01 ~]#
#######################################################################################

1、上面的腳本制作完成后,記得賦權,否則無法執行。
[root@node-01 ~]# chmod +x /etc/keepalived/changemail.py

[root@node-01 ~]#scp /etc/keepalived/keepalived.conf 172.21.4.52:/etc/keepalived
把主機上的配置文件copy到Backup服務器上,現在在兩臺主機上可以利用 ip addr show命令來查看VIP的獲取情況

2、keeplived日志位置指定:
在主從keeplived節點上編譯/etc/sysconfig/keepalived文件

[root@node-01 ~]# vi /etc/sysconfig/keepalived
將最后一行KEEPALIVED_OPTIONS="-D" 修改為:KEEPALIVED_OPTIONS="-D -d -S 0"

3、修改主從節點日志配置文件/etc/rsyslog.conf
[root@node-01 ~]# vi /etc/rsyslog.conf
加入如下配置:
#keepalived -S 0
local0.*/var/log/keepalived.log

4、重啟日志服務
[root@node-01 ~]# systemctl restart rsyslog.service

5、檢查/var/log/keepalived.log文件是否存在

注意事項:
1、輸出的日志信息: /var/log/messages ,更具體的日志信息輸出需要在啟動keepalived時加 -d 參數。
2、在都為MASTER且priority一樣的情況下,后啟的節點(service vrrp start)會取代正在運行的節點變成主用的。
3、一臺為MASTER且priority較高的情況下,不受次節點down/up影響,并且其本身再從down變為up時,會搶奪控制權。
4、在都為MASTER且priority一樣的情況下,正在運行的主節點down(斷網),次節點會自動接管,主節點再起來時不會去搶奪控制權。
#keepalived會定時執行腳本并對腳本執行的結果進行分析,動態調整vrrp_instance的優先級。
#如果腳本執行結果為0,并且weight配置的值大于0,則優先級相應的增加
#如果腳本執行結果非0,并且weight配置的值小于0,則優先級相應的減少
#其他情況,維持原本配置的優先級,即配置文件中priority對應的值。
#這里需要注意的是:
#1) 優先級“不會”不斷的提高或者降低,當track的對象恢復時,又是一致的
#2) 可以編寫多個檢測腳本并為每個檢測腳本設置不同的weight
#3) 不管提高優先級還是降低優先級,最終優先級的范圍是在[1,254],不會出現優先級小于等于0或者優先級大于等于255的情況
#這樣可以做到利用腳本檢測業務進程的狀態,并動態調整優先級從而實現主備切換。

七、nginx配置

[root@node-01 nginx]# vi /usr/local/nginx/conf/nginx.conf
#############nginx配置#############################################################

user  nginx www;
worker_processes  2;
#nginx進程數,建議設置為等于CPU總核心數

#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
#為每個進程分配cpu,將N個進程分配到N個cpu,可以寫多個或者將一個進程分配到多個cpu
error_log  /var/log/nginx/error.log crit;
#pid       /run/nginx.pid;

events {
        use epoll;
        #epoll是多路復用IO(I/O Multiplexing)中的一種方式,但是僅用于linux2.6以上內核,可以 能
        worker_connections 102400;
        #最大連接數量,根據硬件調整,理論上每臺nginx服務器的最大連接數為worker_processes*s
        }

http {
        include       /usr/local/nginx/conf/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
   
    #tcp_nopush     on;
   
    server_tokens off;
    #nginx隱藏版本號

    keepalive_timeout  65;

    proxy_intercept_errors on;
    #表示使nginx阻止HTTP應答代碼為400或者更高的應答

    gzip on;
    #該指令用于開啟或關閉gzip模塊(on/off)

    gzip_min_length 1k;
    #設置允許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取。默認值是0,不管頁面多大都壓縮。建議設置成大于1k的字節數,小于1k可能會越壓越大。

    gzip_buffers 4 8k;
    #設置系統獲取幾個單位的緩存用于存儲gzip的壓縮結果數據流。4 8k代表以8k為單位,安裝原始數據大小以16k為單位的4倍申請內存。

    gzip_http_version 1.1;
    #識別http的協議版本(1.0/1.1)

    gzip_comp_level 3;
    #gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)

gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/xml+rss;
    #匹配mime類型進行壓縮,無論是否指定,”text/html”類型總是會被壓縮的,經實測對本網站的圖片壓縮后,積極反而增大,所以取消圖片類的壓縮。

gzip_vary on;
    #和http頭有關系,加個vary頭,給代理服務器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費不支持的也壓縮,所以根據客戶端的HTTP頭來判斷,是否需要壓縮

    upstream MyApp{
              ip_hash;
              #1.輪詢(默認):每個請求按時間順序逐一分配到不同的后端服務器,如果后端 除
              #2.weight:指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不 況
              #3.ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后題
              #4.fair(第三方):按后端服務器的響應時間來分配請求,響應時間短的優先分配

              server 172.21.4.91:80 max_fails=2 fail_timeout=10s;
              server 172.21.4.92:80 max_fails=2 fail_timeout=10s;
              #max_fails默認為1,fail_timeout默認為10秒,默認情況下后端服務器在10秒內出錯1次認為服務器異常將停止轉發
              check interval=3000 rise=2 fall=2 timeout=1000 type=http;
              #對條目中的所有節點,每3秒檢測1次,請求2次正常則標記該機狀態為UP
              check_http_send "GET /appicrm HTTP/1.0\r\n\r\n";
              #檢測網址子目錄,在這里為http://mail.appi.cn/appicrm
                    }
    server
         {
          listen       80;
          server_name  mail.appi.cn;
          charset utf-8;
          location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf|js|css|htm|html)$
                   {
                    access_log image.log;
                    expires 14d;
                    root /usr/local/nginx/proxy_cache;
                    proxy_store on;
                    proxy_temp_path /usr/local/nginx/proxy_cache_image;
                    if ( !-e $request_filename)
                    #文件和目錄不存在的時候重定向
                       {proxy_pass http://MyApp;}
                       #rewrite ^(.*) http://www.test.com/test/$domain/ break;
                    }
                    #last:重新將rewrite后的地址在server標簽中執行
                    #break:將rewrite后的地址在當前location標簽中執行

      location / {
              rewrite ^/(.*)$ /appicrm/$1 last;
              }
         
          location ~* ^/appicrm/.*$ {
                            proxy_set_header        Host $host;
                            proxy_set_header        REMOTE-HOST $remote_addr;
                            proxy_set_header        X-Real-IP $remote_addr;
                            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                            proxy_pass              http://MyApp;
                            client_max_body_size    10m;
                            client_body_buffer_size 128k;
                            proxy_connect_timeout   90;
                            proxy_send_timeout      90;
                            proxy_read_timeout      90;
                            proxy_buffer_size       4k;
                            proxy_buffers           4 32k;
                            proxy_busy_buffers_size 64k;
                            proxy_temp_file_write_size 64k;
                             }
      location /webstatus {
                    check_status;
                    access_log off;
                    error_log off;
                    auth_basic "Restricted";
                    auth_basic_user_file  /usr/local/nginx/conf/htpasswd/test;
                    #allow IP;
                    #deny all;
                     }

      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
      root   html;
      }
   }
}
[root@localhost ~]#
###################################################################################
 
有幾個需要注意的問題:
1、如下提示的Pid錯誤 
7月 15 18:11:24 localhost.localdomain systemd[1]: Failed to read PID from file /var/run/nginx.pid: Invalid argument
解 決:注釋掉/usr/lib/systemd/system/nginx.service文件內的指定PID路徑那一行,后面find nginx 的PID實際存的位置后再修改回正常的,或干脆注釋掉,因為我的修改了后面又出錯了。nginx安裝的時候指定的位置居然不正確,不知道為何!網上有很多 解決方法包括國外網站都說要安裝各種支持文件,經測試都是錯誤答案。
2、Webstatus這個狀態查詢頁面,你肯定不希望所有人都能訪問,所以需要加密
[root@node-01 ~] mkdir /usr/local/nginx/conf/htpasswd/
[root@node-01 ~] htpasswd -c /usr/local/nginx/conf/htpasswd/test Youki
New password:
Re-type new password:
Adding password for user auth_user
[root@node-01 ~] vi /usr/local/nginx/conf/nginx.conf
auth_basic "Restricted";
auth_basic_user_file  /usr/local/nginx/conf/htpasswd/test;

將以上兩句加入/webstatus節

到此,相信大家對“CentOS 6.5上安裝MySQL-Cluster 7.3.4的過程”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武胜县| 灌南县| 罗山县| 南丹县| 吉隆县| 寿光市| 尤溪县| 民和| 霍城县| 黔江区| 连江县| 泸定县| 阳城县| 胶南市| 邛崃市| 鲁甸县| 清涧县| 中卫市| 融水| 城市| 中西区| 云南省| 荥经县| 凤凰县| 宁强县| 沈丘县| 磐石市| 鄂伦春自治旗| 门头沟区| 肃北| 通化县| 阳泉市| 德钦县| 卫辉市| 英吉沙县| 沙坪坝区| 清苑县| 普宁市| 曲周县| 宾阳县| 大同市|