N25_第二周作業

前言

我們這次使用HAProxy作為負載均衡調度器來實現后端httpd服務的負載均衡和動靜分離,實現將來自用戶的80端口的http請求轉發只后端8080端口的server服務

HAProxy介紹

HAProxy的是一個免費的,非??焖俸涂煽康慕鉀Q方案,提供高可用性,負載均衡和代理對TCP和HTTP的應用程序。它特別適用于非常高流量網站。多年來,它已成為標準的開源的負載均衡程序,現在隨最主流的Linux發行版,并且通常默認的云平臺部署。其運作模式使得其集成到現有的架構非常容易,無風險,同時還提供了可能性不暴露脆弱的Web服務器到網絡

實驗拓撲

N25_第二周作業

實驗環境

VIP1: 192.168.31.6 

主機 IP 功用
C7node1 192.168.31.21, VIP HAproxy, KeepAlived
C7node2 192.168.31.22, VIP HAproxy, KeepAlived
C7node3 192.168.31.23 httpd, php 動態資源
C7node4 192.168.31.24 nginx, 靜態資源

注意: 本文實驗中所有主機SElinux和iptables都是關閉的,  系統為:CentOS 7.2 x86_64

實驗步驟

配置后端httpd服務器

node4 靜態服務器,靜態資源

[root@c7node4 ~]# yum -y install nginx   #安裝nginx服務器
[root@c7node4 ~]# vim /etc/nginx/nginx.conf   #編輯nginx配置文件,修改堅挺端口
    server {
    listen       8080 default_server;   #由80改為8080端口
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
[root@c7node4 ~]# echo '<h1> Jingtai server 192.168.31.24:8080</h1>' > /usr/share/nginx/html/index.html
[root@c7node4 ~]# cp /usr/share/backgrounds/*.jpg /usr/share/nginx/html/   #復制一些圖片文件到網站根目錄做測試
[root@c7node4 ~]# systemctl start nginx.service

N25_第二周作業

node3 動態服務器,動態資源
[root@c7node3 ~]#yum install httpd php          #安裝httpd,php
[root@c7node3 ~]#vim /etc/httpd/conf/httpd.conf #修改配置文件,更改監聽端口8080
ServerRoot "/etc/httpd"
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 8080
[root@c7node3 ~]# systemctl start httpd.service  #啟動httpd服務
[root@c7node3 ~]#cat >> /var/www/html/index.php << "EOF"  #創建網頁文件
><h1>Dongtai server 192.168.31.23:8080</h1>
><img src="/morning.jpg"/>     #我們動態的網頁目錄下并沒有這張圖片
><?php
>phpinfo();
>?>
>EOF

N25_第二周作業

配置HAProxy實現backend負載均衡

[root@c7node1 ~]# yum install  -y haproxy    #安裝haproxy
[root@c7node1 ~]# vim /etc/haproxy/haproxy.cfg   #配置文件如下
mode                    http
log                     global
option                  httplog
option                  dontlognull
option http-server-close
option forwardfor       except 127.0.0.0/8
option                  redispatch
retries                 3
timeout http-request    10s
timeout queue           1m
timeout connect         10s
timeout client          1m
timeout server          1m
timeout http-keep-alive 10s
timeout check           10s
maxconn                 3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80
stats enable
stats hide-version
stats uri /haproxyadm

acl url_static       path_end       -i .jpg .gif .png .css .js .html

default_backend     dongtai
use_backend static          if url_static

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance     roundrobin
server      static 192.168.31.24:8080 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend dongtai
balance     roundrobin
server  dongtai 192.168.31.23:8080 check
[root@c7node1 ~]#systemctl start haproxy.service

測試動靜分離效果

我們訪問 192.168.31.21  這個是haproxy服務器IP地址

N25_第二周作業

我們關閉 192.168.31.24 這個靜態服務器nginx服務后結果
[root@c7node4 ~]# systemctl stop nginx.service

N25_第二周作業

我們再次開啟192.168.31.24 這個靜態服務器nginx服務后,圖片顯示正常
[root@c7node4 ~]# systemctl start nginx.service
我們打開了stats頁面, 可以通過設置的URI進行訪問

N25_第二周作業

配置keepalived

配置c7node1上keepalived的配置文件

[root@c7node4 ~]#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from zhong@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER                #配置為主節點
    interface eno16777736
    virtual_router_id 51
    priority 100                #主節點的權重
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.31.6 dev eno16777736 label eno16777736:0   #虛擬vIP
    }
}
[root@c7node4 ~]#systemctl start keepalived.service
[root@c7node4 ~]#ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:13:c2:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.21/24 brd 192.168.31.255 scope global eno16777736
   valid_lft forever preferred_lft forever
inet 192.168.31.6/32 scope global eno16777736:0  #虛擬VIP,已經配置上了
   valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe13:c204/64 scope link 
   valid_lft forever preferred_lft forever


#配置c7node2上的keepalived配置文件#
[root@c7node2 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from zhong@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP            #備節點
    interface eno16777736
    virtual_router_id 52
    priority 95             #權重,應該小于主節點
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.31.6 dev eno16777736 label eno16777736:0
    }
}
[root@c7node2 ~]# systemctl start keepalived.service
[root@c7node2 ~]# ip addr   #發現虛擬VIP沒有在備用節點上啟用
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:60:20:b7 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.22/24 brd 192.168.31.255 scope global eno16777736
   valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe60:20b7/64 scope link 
   valid_lft forever preferred_lft forever

最終測試

直接訪問192.168.31.6  此時VIP在C7node1上面

N25_第二周作業

將C7node1上面的keepalived停止,VIP自動轉移到C7node2上面,

N25_第二周作業

總結

我們輕松地通過HAProxy實現資源的動靜分離和后端httpd主機的負載均衡,也通過KeepAlived實現HAProxy的高可用, 對于一個集群架構來說,整套架構還不算是很完整的。比如,在keepalived上面沒有做后端主機健康檢查;后端還沒有配置varnish緩存服務器。這些知識還需要在后續的學習中繼續來實踐。

原創文章,作者:N25_木頭鐘,如若轉載,請注明出處:http://www.www58058.com/63371

(0)
N25_木頭鐘N25_木頭鐘
上一篇 2016-12-12
下一篇 2016-12-12

相關推薦

  • 筆記三、如何在VMWare Workstation中安裝CentOS 7

    一、準備工作     1.1 安裝VMWare WorkStatrion     1.2 準備好CentOS 7 鏡像包     http://www.centoscn.com/CentosSoft/iso/    CenOS7下載地址 二…

    2017-02-23
  • Linux文件目錄的權限

     Linux是多用戶多任務的分時操作系統,如果每個人都對文件和目錄都是隨便訪問的話,難么你的文件很有可能會被他人刪除或修改,從而丟失數據。為此系統對文件增加了權限的機制來防止這種事情的發生。對文件而言,用戶被分為三類:屬主(onwer)、屬組(group)、和其他(other)。常規的權限分為:讀(r readable)、寫(w writable)…

    Linux干貨 2016-08-07
  • DNS 的搭建 子域授權及轉發(正向解析)

           dns(名稱解析服務).它的作用就是將主機名解析成ip地址的過程,同時它是一個分布式,分層次的主機名管理架構。為了我們能更好的了解與理解,實驗才是更好的。     安裝部署DNS服務: 一.首先安裝DNS服務器軟件 bind,還有其他相關的軟件包,有bind-libs(庫文件),bin…

    2017-07-31
  • 編譯安裝——吐血經驗,內附腳本

    程序包編譯安裝: 源碼包:name-VERSION-release.src.rpm         rpm由源碼包安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝        &nbsp…

    Linux干貨 2016-08-24
  • Linux文件管理和Bash特性

    一、Linux基本文件管理命令 主要介紹cp、mv、rm命令的基本用法以及使用示例 cp命令 cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄 cp (選項) (參數) 常用選項: -a:此參數的效果和同時指定”-dpR”參數相同,用于實現歸檔; -d:復制符號鏈接文件本身,而非其指向的源文件; -f:強行復制文件或目錄,不論目標文件或目錄是…

    Linux干貨 2017-07-09
  • 馬哥教育網絡班21期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器 集線器也稱HUB,工作在OSI七層結構的第一層物理層,屬于共享型設備,接收數據廣播發出,在局域網內一般都是星型連接拓撲結構,每臺工作站都連接到集線器上。 由于集線器的帶寬共享特性導致網絡利用效率極低,一般在大中型的網絡中不會使用到集線器。 網橋 網橋(Bridge)也稱橋…

    Linux干貨 2016-09-01

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-16 23:18

    贊~ keepalived 中的其中一個配置參數 virtual_router_id 需要注意下~~繼續加油~

欧美性久久久久