<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          分布式環(huán)境搭建的過程記錄

          共 6201字,需瀏覽 13分鐘

           ·

          2020-09-16 11:30

          作者:彼岸~擷

          來源:SegmentFault 思否社區(qū)




          # 分布式實現(xiàn)的過程整理




          1、反向代理


          1.1 最初的需求


          • 通過image.jt.com的網(wǎng)址訪問自己的圖片信息

          • 虛擬地址:http://image.jt.com/

          • 磁盤地址:D:JT-SOFTimages

          //引入配置文件@PropertySource("classpath:/properties/image.properties")//拿到配置文件中的image.localDir的值并注入給localDir@Value("${image.localDir}")private String localDir;    // = "D:/JT-SOFT/images";     //1.優(yōu)化點一


          2.2 什么是反向代理


          • 業(yè)務(wù)分析:為了讓所有的用戶都可以訪問到圖片信息,準(zhǔn)備虛擬地址,并實現(xiàn)虛擬地址和本地磁盤之間的映射關(guān)系,用反向代理實現(xiàn)

          • 反向代理的說明:反向代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間,但是對于用戶而言,反向代理服務(wù)器就相當(dāng)于目標(biāo)瀏覽器,及用戶直接訪問反向代理服務(wù)器就可以獲取目標(biāo)服務(wù)器的資源。同時,用戶不需要知道目標(biāo)服務(wù)器的地址,也無需在用戶端做任何設(shè)定,反向代理服務(wù)器用于web加速,即使用反向代理服務(wù)器作為web服務(wù)器的前置機(jī)來降低網(wǎng)絡(luò)和服務(wù)器的負(fù)載,提高訪問效率。

            • 代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間

            • 用戶并不知道要訪問那個真是的服務(wù)器

            • 用戶并不知道真實的服務(wù)器資源是誰,保護(hù)了真實的服務(wù)器資源i信息

            • 反向代理服務(wù)器一般都是服務(wù)器端代理,保護(hù)真實服務(wù)器信息

          • 正向代理:用戶知道訪問的真實服務(wù)器是誰,只是將請求交給代理服務(wù)器來獲取,正向代理保護(hù)了用戶的信息,服務(wù)器并不知道訪問的真實用戶是誰,除非順著網(wǎng)線一路查


          2.3 Nginx


          • Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強(qiáng),事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
            內(nèi)存: 不到2M
            并發(fā)能力強(qiáng): 3-5萬次/秒 理想環(huán)境下 /tomcat服務(wù)器 150-220/秒

          • nginx官網(wǎng)下載

          • nginx安裝

            • 路徑不要放到系統(tǒng)盤,路徑不能有中文和空格

            • 以超級管理員的權(quán)限啟動,動態(tài)獲取權(quán)限

            • 在任務(wù)管理其中查看是否啟動成功

            • 瀏覽器訪問:localhost:80/

          • 安裝中的常見問題:

          • 端口被占用:nginx默認(rèn)使用80端口,只要找到系統(tǒng)中占用80端口的進(jìn)程,并殺掉就可以

          # 找到占用80或含80字符串的所有進(jìn)程,找到第一個,查看pid號netstat -ano | findstr "80"# 然后在任務(wù)管理器中找到pid,并結(jié)束進(jìn)程即可# 或者可以從控制臺強(qiáng)制結(jié)束對應(yīng)pid的進(jìn)程kill pid


          2.4 nginx命令


          • 關(guān)于nginx進(jìn)程項的說明:nginx每次啟動都會同時生成兩個進(jìn)程項,一個是主進(jìn)程,一個是守護(hù)進(jìn)程,主進(jìn)程進(jìn)行反向代理業(yè)務(wù),守護(hù)進(jìn)程防止主進(jìn)程意外關(guān)閉

          • 基本命令

            • 要求在nginx的根目錄中執(zhí)行,在根目錄欄中輸入cmd,enter之后,進(jìn)入dos窗口,輸入以下命令:

          # 啟動nginx start nginx# 重啟nginx nginx -s reload# 停止nginx nginx -s stop
          • 輸入http://localhost:80/跳轉(zhuǎn)到目標(biāo)nginx頁面則安裝成功

          # 編輯nginx.conf# 配置圖片服務(wù)器server{    listen 80;    server_name image.jt.com;    location / {        # 映射到本地的目錄中        root C:/Users/tarena/Desktop/CGB-JT/images;    }}
          • 編輯hosts文件/利用switchhosts編輯(實現(xiàn)本地模擬網(wǎng)絡(luò)訪問)

          127.0.0.1 image.jt.com127.0.0.1 manager.jt.com127.0.0.1 www.jt.com127.0.0.1 sso.jt.com

          注:利用host工具編輯失敗則修改hosts文件的權(quán)限


          2.5 實現(xiàn)域名代理


          • 配置域名代理

          # 配置域名代理server {    //監(jiān)聽80端口上域名為manager.jt.com的請求    listen 80;    server_name manager.jt.com;    location / {        # 代理服務(wù)器的地址        proxy_pass http://localhost:8091;    }}

          啟動項目之后,在瀏覽器中訪問http://manager.jt.com,就能夠?qū)崿F(xiàn)訪問http://localhost:8091


          2.6 nginx負(fù)載均衡原理



          若只有一臺服務(wù)器,在高并發(fā)的情況下服務(wù)器會立刻崩潰,如果用多臺服務(wù)器,那可以減輕一臺服務(wù)器的壓力,服務(wù)器集群可以解決高并發(fā)中的后端服務(wù)器問題


          • nginx集群的搭建

            • 要求:啟動三臺服務(wù)器,運行項目,端口號分別是8081、8082、8083,通過getPort請求來獲取當(dāng)前服務(wù)器的端口號并字符串返回

            • 動態(tài)獲取端口號:


          //每臺服務(wù)器上都有這個方法,動態(tài)獲取本項目所在的端口號@RestControllerpublic class PortController {    //考點:動態(tài)復(fù)制操作    @Value("${server.port}")    private Integer port;
          @RequestMapping("/getPort") public String getPort(){ return "當(dāng)前訪問的端口號:"+port; }}
          • 發(fā)布三臺tomcat服務(wù)器,占用的端口分別是8081、8082、8083

            • 項目打包:clean--build--install

            • 項目發(fā)布:Java -jar 8081.jar

          • 負(fù)載均衡的策略

          • 輪詢策略

          # 商品管理服務(wù)器  監(jiān)聽的是用戶 manager.jt.com:80  映射的是url地址    server {        listen   80;        server_name  manager.jt.com;
          #進(jìn)行反向代理 location / { #映射的url請求網(wǎng)址. #proxy_pass http://localhost:8091; proxy_pass http://jtWindows; } }
          #配置集群 1.默認(rèn)方式 輪詢策略 upstream jtWindows { server localhost:8081; server localhost:8082; server localhost:8083; }


          nginx將用戶的請求輪流發(fā)送到三臺服務(wù)器,輪詢;但是如果公司中有一臺新服務(wù)器和一臺舊服務(wù)器來同時作為后端服務(wù)器,那么此時采用輪詢策略就不合適了,新服務(wù)器的承載能力要高一些,輪詢顯然不能滿足要求


          • 權(quán)重策略

            #配置集群  1.默認(rèn)方式   輪詢策略   2.權(quán)重策略    upstream jtWindows {        server localhost:8081  weight=6;        server localhost:8082  weight=3;        server localhost:8083  weight=1;    }

          性能越高的服務(wù)器,則承擔(dān)的壓力也就越高,但一個用戶在購物車中加入了一些商品,退出界面,再次訪問的時候,輪詢策略和權(quán)重策略會將請求發(fā)往可能與原先服務(wù)器不同的服務(wù)器處理,這個時候,緩存的數(shù)據(jù)全部都找不到了,為了解決這種問題,提出了IPUSHCELUE


          • ipush策略:將用戶與服務(wù)器之間進(jìn)行綁定,以后該用戶再進(jìn)行訪問時就用原來訪問的服務(wù)器做處理,采用ipush算法

            #配置集群  1.默認(rèn)方式   輪詢策略   2.權(quán)重策略   3.IPhash策略    upstream jtWindows {        ip_hash;        server localhost:8081  weight=6;        server localhost:8082  weight=3;        server localhost:8083  weight=1;    }

          弊端:用戶與服務(wù)器綁定,當(dāng)服務(wù)器宕機(jī)時可能影響用戶的使用


          由于訪問是通過計算的結(jié)果,可能會導(dǎo)致嚴(yán)重的負(fù)載不均衡的現(xiàn)象


          • nginx高級屬性

            #配置集群  1.默認(rèn)方式   輪詢策略   2.權(quán)重策略   3.IPhash策略    upstream jtWindows {        #ip_hash;    server localhost:8081  weight=6;        server localhost:8081 down;        server localhost:8082 down;        server localhost:8083 backup;//備用機(jī)    }
            • down屬性:利用down屬性來標(biāo)識故障機(jī),則nginx反向代理服務(wù)器暫時不會訪問該服務(wù)器

            • 備用機(jī)策略:正常情況下一般的服務(wù)器部署時需要準(zhǔn)備幾臺服務(wù)器做備用,正常情況下該服務(wù)器不會參與工作,只有當(dāng)主機(jī)忙或宕機(jī)的時候,該服務(wù)器才會工作

          • Nginx高可用配置

            當(dāng)服務(wù)器宕機(jī)的時候,可以通過配置超時時間和最大訪問失敗次數(shù),來實現(xiàn)服務(wù)器的自動切換,無需人為干預(yù)

            如果nginx訪問某臺服務(wù)器時,如果該服務(wù)器訪問失敗,失敗的次數(shù)達(dá)到最大失敗次數(shù)時.在60秒之內(nèi),nginx不會再次訪問故障機(jī).直到下一個周期

            #配置集群  1.默認(rèn)方式   輪詢策略   2.權(quán)重策略   3.IPhash策略    upstream jtWindows {        #ip_hash;    server localhost:8081  weight=6;        server localhost:8081 max_fails=1 fail_timeout=60s;        server localhost:8082 max_fails=1 fail_timeout=60s;        server localhost:8083 max_fails=1 fail_timeout=60s;    }





          2、虛擬機(jī)


          1.1 修改虛擬機(jī)網(wǎng)絡(luò)空間地址


          • 將net網(wǎng)絡(luò)配置修改為192.168.126.0(在VMware Workstation Pro)中修改(net模式)

          • 設(shè)置DHCP的租用時間,起始ip和結(jié)束ip

          • 在windows中校驗nat8的ip地址(在windows中 利用cmd命令 ipconfig 檢查net8IP地址 是否為192.168.126.1 即可)

          ipconfig

          如果Linux系統(tǒng)開機(jī)之后輸入ip addr,不能展現(xiàn)正常的ip地址,則重啟網(wǎng)卡來實現(xiàn)ip的獲取

          systemctl stop NetworkManagerservice network restart


          1.2 遠(yuǎn)程連接工具的安裝和使用


          • session

          • SSH

          • 設(shè)置遠(yuǎn)程host

          • 新建用戶

          • 通過用戶來登錄服務(wù)器


          1.3 JDK的配置


          • 定位工作目錄:Linux的安裝目錄在/usr/local/src

            cd /usr/local/src/

          • 將JDK壓縮文件傳入該目錄中

          • 解壓JDK

            tar -xvf jdk-8u51-linux-x64.tar.gz

          • 修改JDK的名稱

            mv jdk-8u51-linux-x64.tar.gz jdk1.8

          • 修改環(huán)境變量配置文件

            vim /etc/profile

          • 配置JDK

            # 設(shè)定JDK環(huán)境export JAVA_HOME=/usr/local/src/jdk1.8export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib
          • 重啟環(huán)境變量


          1.4 mariadb的安裝


          • 安裝命令:yum install mariadb-server輸入命令之后會直接去網(wǎng)上下載mariadb數(shù)據(jù)庫

          • 數(shù)據(jù)庫的常規(guī)命令

          啟動數(shù)據(jù)庫:systemctl start mariadb重啟數(shù)據(jù)庫:systemctl?restart?mariadb關(guān)閉數(shù)據(jù)庫:systemctl stop mariadb
          • 初始化數(shù)據(jù)庫配置:剛開始沒有設(shè)定用戶名和密碼,所以需要設(shè)定


          命令:mysql_secure_installation第一次使用直接回車,然后一路yes,設(shè)定密碼之后登陸mysql -uroot -proot,查看數(shù)據(jù)庫中的表等信息


          • 修改數(shù)據(jù)庫權(quán)限

          //查看select host ,user from user where user=‘root’;//設(shè)定哪些ip地址可以訪問數(shù)據(jù)庫%代表統(tǒng)配update user set host='%' where host="localhost";select host,user from user where user='root';//刷新數(shù)據(jù)庫權(quán)限flush privileges;

          操作結(jié)束后用exit或ctrl+c退出


          1.5 Linux防火墻命令


          防火墻是防火墻的全局變量,如果操作了全局的變量開關(guān),則影響的是下一次的防火墻操作

          • 永久關(guān)閉防火墻systemctl disable firewalld.service

          • 永久開啟防火墻systemctl enable firewall.service

          • 現(xiàn)在關(guān)閉現(xiàn)有的防火墻systemctl stop firewalld.service

          • 現(xiàn)在打開現(xiàn)有的防火墻systemctl start firewalld.service

          • 檢查防火墻的狀態(tài)firewall-cmd --state

          firewall-cmd --zone=public --add-port=3306/tcp --permanent命令含義:–zone #作用域–add-port=80/tcp #添加端口,格式為:端口/通訊協(xié)議–permanent #永久生效,沒有此參數(shù)重啟后失效
          - 檢查數(shù)據(jù)庫連接是否正常可視化界面來鏈接部署在某臺主機(jī)上的數(shù)據(jù)庫![image](/img/bVbOJdb)### 1.6 導(dǎo)入京淘數(shù)據(jù)庫



          點擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動和交流。

          -?END -

          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  美女肏 | 麻豆国产91 在线播放 | 毛片在线网站 | 欧美三级韩国三级日本三级在线观看 | 日本成人中文字幕 |