<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### 一,lvs+keepalived 與HAproxy+keepalived[#](https://www.cnblogs.com/g2thend/p/10996614.html###%E4%B8%80%EF%BC%8Clvs+keepalived-%E4%B8%8Ehaproxy+keepalived) [![](https://img2018.cnblogs.com/blog/1673483/201906/1673483-20190610082121481-1346528555.png)](https://img2018.cnblogs.com/blog/1673483/201906/1673483-20190610082121481-1346528555.png) [![](https://img2018.cnblogs.com/blog/1673483/201906/1673483-20190610082136102-2011786552.png)](https://img2018.cnblogs.com/blog/1673483/201906/1673483-20190610082136102-2011786552.png) #### ##二,實驗操做:[#](https://www.cnblogs.com/g2thend/p/10996614.html###%E4%BA%8C%EF%BC%8C%E5%AE%9E%E9%AA%8C%E6%93%8D%E5%81%9A%EF%BC%9A) nfs掛載: nfs掛載,在后端創建用戶,用戶名及id與服務器nginx一致,并對導出的目錄為該用戶放開權限 /home/nfstestdir? ? ? ?192.168.222.0/24(rw,sync,all\_squash,anonuid=1000,anongid=1000) ~~~ NFS權限參數配置 ro 只讀訪問 rw 讀寫訪問 sync 所有數據在請求時寫入共享 async NFS在寫入數據前可以相應請求 secure NFS通過1024以下的安全TCP/IP端口發送 insecure NFS通過1024以上的端口發送 wdelay 如果多個用戶要寫入NFS目錄,則歸組寫入(默認) no_wdelay 如果多個用戶要寫入NFS目錄,則立即寫入,當使用async時,無需此設置。 hide 在NFS共享目錄中不共享其子目錄 no_hide 共享NFS目錄的子目錄 subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認) no_subtree_check 和上面相對,不檢查父目錄權限 all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。 no_all_squash 保留共享文件的UID和GID(默認) root_squash root用戶的所有請求映射成如anonymous用戶一樣的權限(默認) no_root_squas root用戶具有根目錄的完全管理訪問權限 anonuid=xxx 指定NFS服務器/etc/passwd文件中匿名用戶的UID anongid=xxx 指定NFS服務器/etc/passwd文件中匿名用戶的GID ~~~ ### nginx +fpm 配置重點,php-fpm? 配置啟動用戶為nginx? ,這樣php可以以相同的用戶處理nfs上的文件 配置參考其他博文:[https://www.cnblogs.com/g2thend/p/10884579.html](https://www.cnblogs.com/g2thend/p/10884579.html) lvs+keepalived?? keepalived? 配置2個vip,一個走網站服務,一個走數據庫。和圖示不同,只是ip 有改動,注意所有ip 為同一局域網下 ``` `cat`?`/etc/keepalived/keepalived``.conf` `! Configuration File``for``keepalived` `global_defs {` `notification_email {` `2222@qq.com???` `}` `notification_email_from? admin@loaclhost` `smtp_server? 127.0.0.1` `smtp_connect_timeout 30` `router_id? test73` `vrrp_skip_check_adv_addr` `# vrrp_strict` `vrrp_garp_interval 0` `vrrp_gna_interval 0` `}` `vrrp_instance VI_1 {` `state MASTER` `interface eth1` `virtual_router_id 51` `priority?? 50` `advert_int 1` `authentication {` `auth_type PASS` `auth_pass 1q2w3e4r` `}` `virtual_ipaddress {` `#??? 192.168.36.179` `192.168.36.179?? dev eth1? label eth1:0` `192.168.36.180?? dev eth1? label eth1:1` `}` `}` `virtual_server 192.168.36.180 3306? {????` `delay_loop?? 5??????????????????????` `lb_algo rr?????????????????????????``#調度算法` `lb_kind? DR????????????????????????``#集群類型NAT|DR|TUN` `nat_mask 255.255.255.0?????????????``#子網掩碼,可選項。` `#persistence_timeout 50???????????????` `protocol TCP???????????????????????``#|UDP|SCTP` `#sorry_server <IPADDR> <PORT>????????` `real_server? 192.168.36.76? 3306? {??``#RS地址和端口` `weight? 1???????????????????????` `TCP_CHECK {` `connect_port? 3306` `connect_timeout? 3` `nb_get_retry 2` `delay_before_retry 1` `}?` `}????????????` `}` `virtual_server?? 192.168.36.179? 80? {????` `delay_loop?? 5??????????????????????` `lb_algo rr?????????????????????????``#調度算法` `lb_kind? DR????????????????????????``#集群類型NAT|DR|TUN` `nat_mask 255.255.255.0?????????????``#子網掩碼,可選項。` `#persistence_timeout 50???????????????` `protocol TCP???????????????????????``#|UDP|SCTP` `#sorry_server <IPADDR> <PORT>????????` `real_server? 192.168.36.74 80? {??``#RS地址和端口` `weight? 1???????????????????????` `HTTP_GET {??????????????` `url {` `path?``/index``.html????????????????????` `status_code 200?????????` `}?????????????????????????` `connect_timeout 3???????????` `nb_get_retry 3?????????????` `delay_before_retry 3???????` `#? connect_ip <IP ADDRESS>?????` `#? connect_port <PORT>?????????` `#? bindto <IP ADDRESS>????????` `#? bind_port <PORT>???????????` `}` `}` `real_server? 192.168.36.75 80? {??``#RS地址和端口` `weight? 1???????????????????????` `HTTP_GET {` `url {` `path?``/index``.html` `status_code 200?` `}???????????????` `connect_timeout 3?` `nb_get_retry 3????` `delay_before_retry 3` `#? connect_ip <IP ADDRESS>` `#? connect_port <PORT>???` `#? bindto <IP ADDRESS>???` `#? bind_port <PORT>??????` `}` `}` `}` ``` ###2,haproxy +keepalived 此時keepalived只是作為單點故障恢復,不做lvs負載均衡,所以不用配置vrrp\_instance. haproxy配置 ~~~ cat /etc/haproxy/haproxy.cfg global maxconn 100000 chroot /usr/local/haproxy stats socket /var/lib/haproxy/haproxy.sock1 mode 600 level admin process 1 stats socket /var/lib/haproxy/haproxy.sock2 mode 600 level admin process 2 #僅限本機,根據傳送的信號關閉進程等 uid 1990 #nobody /sbin/nologin gid 1990 #useradd -s /sbin/nologin haproxy 更換uid pid daemon nbproc 2 #啟動進程數,與cpu保持一致 #nbthread 2 #指定每個haproxy進程開啟的線程數,默認為每個進程一個線程 使用版本>v1.8 #看線程 pstree #ulimit-n 65535 #設置每進程所能夠打開的最大文件描述符數目 #cpu-map 1 0 #第一個進程綁定到0核心上 #cpu-map 2 1 #cpu-map 3 2 #cpu-map 4 3 pidfile /run/haproxy.pid spread-checks 2 #后端server狀態check,隨機提前或延遲百分比時間,建議2-5(20%-50%)之間,默認0不延遲 log 127.0.0.1 local3 info #沒有專門日志 vim /etc/rsyslog.conf #imudp 模塊打開 接收端口打開 #local3.* /var/log/haproxy_xxxx.log systemctl restart rsyslog defaults option http-keep-alive #會話保持 option forwardfor #頭部添加客戶端源地址 ip透傳 #后端服務器需要記錄客戶端真實ip, 需要在HTTP請求中添加”X-Forwarded-For”字段; #haproxy自身的健康檢測機制訪問后端服務器時, 不應將記錄訪問日志,可用except來排除127.0.0.0,即haproxy本身 #option httpclose #啟http協議中服務器端關閉功能, 每個請求完畢后主動關閉http通道, 使得支持長連接,使得會話可以被重用,使得每一個日志記錄都會被記錄 #option dontlognull #如果產生了一個空連接,那這個空連接的日志將不會記錄. maxconn 100000 #最大并發 mode http #全局默認轉發模式,listen 區域可重寫該變量 timeout connect 60s #TCP之前 (請求到后端,不能建立連接 timeout client 600s #空連接時間 timeout server 600s #tcp之后(請求已轉發) 后端處理較長,建議設置久時間 timeout check 10s #心跳檢測時間 #timeout http-request 10s #默認http請求超時時間 #timeout queue 1m #默認隊列超時時間, 后端服務器在高負載時, 會將haproxy發來的請求放進一個隊列中 #當與后端服務器的會話失敗(服務器故障或其他原因)時, 把會話重新分發到其他健康的服務器上; 當故障服務器恢復時, 會話又被定向到已恢復的服務器上; #還可以用”retries”關鍵字來設定在判定會話失敗時的嘗試連接的次數 #option redispatch #retries 3 #當haproxy負載很高時, 自動結束掉當前隊列處理比較久的鏈接. #option abortonclose #設置默認的負載均衡方式 #balance source #balnace leastconn listen stats mode http bind 0.0.0.0:9999 stats enable log global #option httplog #日志格式 #maxconn 10 #統計頁面默認最大連接 #stats hide-version #隱藏統計頁面上的haproxy版本信息 #stats refresh 30s #監控頁面自動刷新時間 #stats realm LTC\ Haproxy #統計頁面密碼框提示文本 stats uri /haproxy-status stats auth haadmin:1q2w3e4r #手工啟動/禁用后端服務器, 可通過web管理節點 stats admin if TRUE #設置haproxy錯誤頁面 errorfile 400 /usr/local/haproxy/errorfiles/400.http errorfile 403 /usr/local/haproxy/errorfiles/403.http errorfile 408 /usr/local/haproxy/errorfiles/408.http errorfile 500 /usr/local/haproxy/errorfiles/500.http errorfile 502 /usr/local/haproxy/errorfiles/502.http errorfile 503 /usr/local/haproxy/errorfiles/503.http errorfile 504 /usr/local/haproxy/errorfiles/504.http listen web_port bind *:80 #填寫具體的地址端口(可綁定多網卡分流 mode tcp log global #option forwardfor server web1 192.168.36.74:80 weight 2 check port 9000 inter 3000 fall 2 rise 5 #健康檢查后端php:9000 server web2 192.168.36.75:80 weight 3 check port 9000 inter 3000 fall 2 rise 5 #健康檢查后端php:9000 ~~~ keepalived 主備配置文件需改變??state MASTER? 狀態,優先級頁需要改變,默認為搶占模式,即主故障后備生效,主恢復后備因為優先級再次失效 ~~~ global_defs { notification_email { 2222@qq.com } notification_email_from admin@loaclhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id test73 vrrp_skip_check_adv_addr # vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER interface eth1 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1q2w3e4r } virtual_ipaddress { # 192.168.36.179 192.168.36.179 dev eth1 label eth1:0 192.168.36.180 dev eth1 label eth1:1 } } ~~~ #### keepalived? 監控腳本 ~~~ #keepalived 再改變狀態即 MASTER 或 BACKUP 時執行腳本 cat /etc/keepalived/notify.sh #!/bin/bash contact='2012@qq.com' notify() { mailsubject="$(hostname) to be $1, vip 轉移" mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1" echo "$mailbody" | mail -s "$mailsubject" $contact } case $1 in master) notify master ;; backup) notify backup ;; fault) notify fault ;; *) echo "Usage: $(basename $0) {master|backup|fault}" exit 1 ;; esac 調用方法 vrrp_instance 中調用 notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault" #判斷本機是否可用,對vs權重進行調整,進而改變VIP的位置 (根據第三方文件判斷本機服務是否正常) #主配置文件中聲明 vrrp_script chk_down { script "/bin/bash -c '[[ -f /etc/keepalived/down ]]' && exit 7 || exit 0" #script "/usr/bin/killall -0 nginx" #根據文件是否存在測試進程是否活躍 interval 1 weight -20 fall 3 rise 5 timeout 2 } #vrrp_instance 中調用 track_script { #chk_down chk_nginx } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看