Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久9966e这里只有精品,日韩电影在线,高清午夜毛片

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          阿里云服務器部署方案(nginx+tomcat+my

          阿里云服務器部署方案(nginx+tomcat+mysql)

          署結構說明

          本教程教大家通過阿里云服務器搭建一個由nginx做代理轉發的javaweb系統,所有的請求通過nginx

          轉發到對應的tomcat下。

          一、準備

          1、阿里云Ubuntu服務器一臺

          2、ssh遠程連接工具

          window下可以使用xshell,putty,securecrt。推薦使用xshell個人覺得比較方便。

          Mac或者linux都可以直接使用控制臺連接

          3、下載安裝所需要資源包(tomcat7,nginx1.6,nginx配置 linux環境證書更新腳本),把下載好的resource.zip上傳到服務器上

          本例中resource包放在 /home/resource下

          resource.zip

          二、安裝基礎環境

          在開始安裝具體的軟件前我們需要安裝一些支持性環境或者軟件,創建好文件夾。

          1、更新apt-get命令

          apt-get -y update

          2、安裝mysql依賴查詢和其他所需要用到的程序

          apt-get -y install unzip build-essential libncurses5-dev libfreetype6-dev libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg62-dev libpng12-dev libfreetype6-dev libsasl2-dev libpcre3-dev autoconf libperl-dev libtool libaio*

          3、清除防火墻設置

          iptables -F

          4、解壓resource.zip,切換到resource文件夾中

          unzip /home/resource.zip

          5、更新ssl證書

          ./env/update_openssl.sh

          6、創建所需要用到的文件夾,我們需要創建的文件結構如下

          /home

          |- www

          |- java1.7 //java環境安裝文件夾

          |- tomcat7 // tomcat文件夾

          |- nginx // nginx根目錄

          |-sites-enabled //nginx配置文件目錄

          |-log //日志文件目錄

          |- webresource

          |- static //nginx文件上傳目錄

          mkdir -p /home/www/tomcat7

          三、軟件安裝

          1、安裝tomcat

          mv apache-tomcat-7.0.63 /home/www/tomcat7

          2、安裝java運行環境,命令的意思是下載jdk、解壓jdk壓縮文件、移動解壓后的文件

          wget

          設置java環境變量

          echo 'export JAVA_HOME=/home/www/java1.7' >> /etc/profile

          3、安裝ngix

          創建文件夾,解壓文件

          touch /home/www/log/nginx/access.log

          切換工作目錄

          cd /home/www/nginx/

          開始安裝

          ./configure

          修改配置文件

          cd /home/resource

          啟動nginx,我們在nginx的root路徑下寫入一個index.html文件然后啟動nginx

          touch /home/www/webresource/static/index.html

          啟動成功后你可以通過訪問ip看到一個寫著hellow的網站

          配置nginx代理tomcat,我們在 /home/www/nginx/sites-enabled 文件下創建一個叫tomcat的文件,文件內容如下,表示nginx將代理www.test.com這個域名,并且轉發到本地的tomcat監聽端口下。

          server {

          4、mysql數據庫安裝

          sudo apt-get -y install mysql-server

          修改遠程登錄權限 ,mysql默認是不開啟遠程登錄的,如要需要開啟則需要修改配置

          需要改動一下 /etc/mysql/my.cnf文件把#bind-address=127.0.0.1節點注釋掉

          注意最新版本mysql my.cnf中已經不再配置具體參數,而是分成了2個文件

          #bind-address 需要在/etc/mysql/mysql.conf.d/mysqld.cnf中修改

          修改完成后重啟mysql

          service mysql restart

          創建mysql遠程登錄用戶,給用戶授權數據庫管理權限。這里創建了一個testdb數據庫,然后創建了一個用戶,用戶名為:testdb_user,密碼為:testdbpassword。這個用戶就可以遠程登錄mysql數據庫了

          CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

          5、安全軟件

          考慮到服務器端的安全問題,大家可以選擇性的安裝一些安全軟件如安全狗,

          wget

          啟動安全狗

          service safedog restart

          進入管理界面

          sdui

          久之前,小編就買了一年的阿里云服務器,也購買了域名,一直都沒有時間,加上自己對linux的知識不足,最后小編終于把wordpress和tomcat同時部署在一個服務器上,

          先簡單說說阿里云的購買流程,如果你的域名不需要備案,只是能夠訪問那么簡單的多,

          wordpress部署部分

          在阿里云部署購買云主機CES或輕應用服務器,

          如果你在24歲以下,進行學生認證,那么一平均一個月9.9元,

          在系統選擇上,windows會有可視化的界面,不會linux的可以選擇windows

          想搭建自己的博客的可以選擇wordpress;

          只是部署java項目可以直接選擇系統鏡像的centos

          域名購買

          域名可以選擇一個自己喜歡的,看一下不同的后綴名交流,查看一下價格

          這里需要填寫個人相關信息

          并且通過實名認證

          在控制臺的域名就可看到自己購買的域名,選擇解析,填寫剛才購買服務器的ip地址就解析完成了

          這時回到輕應用服務器列表,

          按照圖中的命令就可以進行操作,設置wordpress的站點信息,這里阿里云有完整的參考文檔,這里我就不寫了,可以參考這個文章

          java項目部署

          java項目部署需要tomcat jdk 和mysql 本地電腦與服務傳遞文件需要使用ftp,以及開啟相關端口,在阿里云的安全組開啟如圖的安全規則,

          使用遠程連接工具鏈接阿里云:

          ftp安裝:

          ftp的安裝

          這里小編一直沒有使用安裝上傳文件成功過,

          百度了ftp的文件的配置,執行了安裝命令,使用Suceure File Transfer就可以進行文件上傳

          mysql安裝

          安裝mysql:

          依次運行一下命令

          cd /tmpwget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 
          rpm -ivh mysql-community-release-el7-5.noarch.rpm 
          yum install mysql mysql-server mysql-devel -y
          

          開啟服務

          systemctl start mysql.service
          

          查看是否開啟成功

          netstat -anp|grep 3306
          

          通過Yum安裝的mysql的管理員賬戶是沒有密碼的, 如下命令設置為admin

          mysqladmin -u root password admin
          mysql -uroot -padmin
          

          創建一個用戶

          >insert into mysql.user(Host,User,Password) values("localhost","用戶名",password("密碼"));
          賦予遠程連接等權限
          >grant all privileges on *.* to '用戶名'@'%' identified by '密碼';刷新權限flush privileges;
          

          就可以使用mysql管理工具進行管理

          在wordpress部署的時候,會默認安裝mysql,所以我們就不需要自己再裝mysql了

          需要自己創建一個用戶,賦予權限,不能修改默認的數據庫密碼,否則wordpress會鏈接不上數據庫導致博客網頁不能訪問,

          jdk安裝

          CentOS 7.3 可能會默認安裝open jdk,如果沒有的話,本地在oracle下載tar.gz格式的jdk

          上傳到服務器,復制到一個文件夾 解壓然后

          vim vim /etc/profile
          

          在打開的文件最后一行,

          加入#java environmentexport JAVA_HOME=/usr/java/安裝的jdk目錄export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jarexport PATH=$PATH:${JAVA_HOME}/bin/etc/profile
          

          還有就是在線安裝

          yum -y install java-1.8.0-openjdk.x86_64
          

          接著運行

          java -version
          

          出現當前java版本即表示java安裝成功了

          tomcat安裝

          tomcat 也可以進行在線安裝

          cd /tmp
          wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz
          tar xzf apache-tomcat-7.0.92.tar.gz
          mv apache-tomcat-7.0.92 /usr/local/tomcat7
          運行
          /usr/local/tomcat7/bin/startup.sh
          檢查
          netstat -anp|grep 8080
          

          開啟防火墻的8080端口 包括阿里云的安全組

          firewall-cmd --zone=public --add-port=8080/tcp --permanent
          firewall-cmd --reload #重啟firewall
          

          在瀏覽器進行測試

          也可以在tomca官網下載linux的tomcat壓縮包,上傳到阿里云,解壓啟動服務開放端口

          通過后就可以將自己的數據庫導入阿里云的數據庫,

          將自己的java項目打包(打包前將連接參數修改)

          復制到tomcat的webapps下,地址欄輸入

          ip:8080/項目名
          

          就可以訪問自己的項目了

          如果不想要項目名.就將原來的ROOT刪除,項目的war包重命名為ROOT

          這里基本就配置完成,這里小編介紹的相對簡單,有興趣的可以參考

          http://how2j.cn/k/deploy2linux/deploy2linux-breif/1591.html

          這里有詳細到命令的介紹

          最后說一下小編遇到的問題

          ftp上傳文件問題:開始小編安裝了ftp一直不能上傳,最后使用了Suceure File Transfer就可以進行上傳了

          還有就是,開始小編使用在線安裝,一直不成功最后使用了上傳的方式安裝成功

          小編使用wordpress的數據庫,輸入mysql -u root - u 提示找不到命令,然后可能是環境變量找不到命令.在阿里云上找到了mysql的安裝位置,創建一個軟連接到/usr/bin目錄下,解決

          **不要輕易修改mysql的命令,否則會導致wordpress不能訪問

          多個項目部署到tomcat是,注意路徑問題,存在訪問路徑添加項目名時,第一種方式;修改項目的所有請求路徑,第二種,再創建一個tomcat 修改端口號

          小編寫的比較簡單,配置過程中還要參考其他資料,大佬勿噴

          多用戶量大并發度高的應用系統為了避免發布過程中的流量有損,一般選擇在流量較小的半夜發布,雖然這樣做有效果,但不可控導致背后的研發運維成本對企業來說是一筆不小的負擔。基于此,阿里云微服務引擎 MSE 在應用發布過程中,通過應用下線時進行自適應等待+主動通知,應用上線時就緒檢查與微服務生命周期對齊+服務預熱等技術手段所提供的微服務應用無損上下線功能,能有效幫助企業規避線上發布所出現的流量資損。

          無損上下線功能設計

          常見的流量有損現象出現的原因包括但不限于以下幾種:

          • 服務無法及時下線:服務消費者感知注冊中心服務列表存在延時,導致應用下線后在一段時間內服務消費者仍然調用已下線應用造成請求報錯。
          • 初始化慢:應用剛啟動接收線上流量進行資源初始化加載,由于流量太大,初始化過程慢,出現大量請求響應超時、阻塞、資源耗盡從而造成剛啟動應用宕機。
          • 注冊太早:服務存在異步資源加載問題,當服務還未初始化完全就被注冊到注冊中心,導致調用時資源未加載完畢出現請求響應慢、調用超時報錯等現象。
          • 發布態與運行態未對齊:使用 Kubernetes 的滾動發布功能進行應用發布,由于Kubernetes 的滾動發布一般關聯的就緒檢查機制,是通過檢查應用特定端口是否啟動作為應用就緒的標志來觸發下一批次的實例發布,但在微服務應用中只有當應用完成了服務注冊才可對外提供服務調用。因此某些情況下會出現新應用還未注冊到注冊中心,老應用實例就被下線,導致無服務可用。

          無損下線

          其中的服務無法及時下線問題,如下圖 1 所示:

          圖1. Spring Cloud 應用消費者無法及時感知提供者服務下線

          對于 Spring Cloud 應用,當應用的兩個實例 A’ 和 A 中的 A 下線時,由于 Spring Cloud 框架為了在可用性和性能方面做平衡,消費者默認是 30s 去注冊中心拉取最新的服務列表,因此 A 實例的下線不能被實時感知,此時消費者繼續通過本地緩存繼續調用 A 就會出現調用已下線實例出現流量有損。

          針對該問題,阿里云微服務引擎 MSE 基于 Java Agent 字節碼技術設計實現的無損下線功能如下圖 2 所示:

          圖2. 無損下線方案

          在該套無損下線方案中,服務提供者應用僅需接入 MSE,相比一般的有損下線。應用在下線前會有一段自適應等待時期,該時期待下線應用會通過主動通知的方式,向其在自適應等待階段發送了請求的服務消費者發送下線事件,消費者接收到下線事件后會主動拉取注冊中心服務實例列表以便實時感知應用下線事件避免調用已下線實例造成應用下線流量有損。

          無損上線

          延遲加載是軟件框架設計中最常見的一種策略,例如在 Spring Cloud 框架中 Ribbon 組件的拉取服務列表初始化時機默認是要等到服務的第 1 次調用時刻,例如下圖 3 是 Spring Cloud 應用中第 1 次和第 2 次通過 RestTemplate 調用遠程服務的請求耗時情況:

          圖3. 應用啟動資源初始化與正常運行過程中耗時情況對比

          由測試結果可見,第一次調用由于進行了一些資源初始化,耗時是正常情況的數倍之多。因此把新應用發布到線上直接處理大流量極易出現大量請求響應慢,資源阻塞,應用實例宕機的現象。針對該類大流量下應用資源初始化慢問題,MSE 提供的小流量預熱功能通過調節剛上線應用所分配的流量幫助其在進行充分預熱后再處理正常流量從而對新實例進行保護。小流量預熱過程如下圖 4 所示:

          圖4. 小流量服務預熱過程 QPS 與啟動時間關系圖

          除了針對上述應用第一次調用初始化慢所造成的有損上線問題,MSE 還提供了資源預建連接、延遲注冊、確保 Kubernetes 就緒檢查通過前完成服務注冊和確保 Kubernetes 就緒檢查通過前完成服務預熱等一整套無損上線手段來滿足各類不同應用的無損上線需求,整套方案如圖 5 所示:

          圖5. MSE 無損上線方案

          如何使用 MSE 的無損上下線

          接下來將演示阿里云微服務引擎 MSE 在應用發布時提供的無損上下線和服務預熱能力最佳實踐。假設應用的架構由 Zuul 網關以及后端的微服務應用實例(Spring Cloud)構成。具體的后端調用鏈路有購物車應用 A,交易中心應用 B,庫存中心應用 C,這些應用中的服務之間通過 Nacos 注冊中心實現服務注冊與發現。

          前提條件

          開啟 MSE 微服務治理

          • 已創建 Kubernetes 集群,請參見創建 Kubernetes 托管版集群[1]
          • 已開通 MSE 微服務治理專業版,請參見開通 MSE 微服務治理[2]

          準備工作

          注意,本實踐所使用的 Agent 目前還在灰度中,需要對應用 Agent 進行灰度升級,升級文檔:

          https://help.aliyun.com/document_detail/392373.html

          應用部署在不同的 Region(暫時僅支持國內 Region)請使用對應的 Agent 下載地址:

          http://arms-apm-cn-[regionId].oss-cn-[regionId].aliyuncs.com/2.7.1.3-mse-beta/

          注意替換地址中的[RegionId],RegionId 是阿里云 RegionId。

          例如 Region 北京 Agent 地址為:

          http://arms-apm-cn-beijing.oss-cn-beijing.aliyuncs.com/2.7.1.3-mse-beta/

          應用部署流量架構圖

          圖6. 演示應用部署架構

          流量壓力來源

          在 spring-cloud-zuul 應用中,如圖 6 所示,其分別向 spring-cloud-a 的灰度版本和正常版本以 QPS 為 100 的速率同時進行服務調用。

          部署 Demo 應用程序

          將下面的內容保存到一個文件中,假設取名為 mse-demo.yaml,并執行 kubectl apply -f mse-demo.yaml 以部署應用到提前創建好的 Kubernetes 集群中(注意因為 demo 中有 CronHPA 任務,所以請先在集群中安裝 ack-kubernetes-cronhpa-controller 組件,具體在容器服務-Kubernetes->市場->應用目錄中搜索組件在測試集群中進行安裝),這里我們將要部署 Zuul,A, B 和 C 三個應用,其中 A、B 兩個應用分別部署一個基線版本和一個灰度版本,B 應用的基線版本關閉了無損下線能力,灰度版本開啟了無損下線能力。C 應用開啟了服務預熱能力,其中預熱時長為 120 秒。

          # Nacos Server
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            labels:
              app: nacos-server
            name: nacos-server
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: nacos-server
            template:
              metadata:
                labels:
                  app: nacos-server
              spec:
                containers:
                - env:
                  - name: MODE
                    value: standalone
                  image: registry.cn-shanghai.aliyuncs.com/yizhan/nacos-server:latest
                  imagePullPolicy: Always
                  name: nacos-server
                  resources:
                    requests:
                      cpu: 250m
                      memory: 512Mi
                dnsPolicy: ClusterFirst
                restartPolicy: Always
          
          # Nacos Server Service 配置
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: nacos-server
          spec:
            ports:
            - port: 8848
              protocol: TCP
              targetPort: 8848
            selector:
              app: nacos-server
            type: ClusterIP
          
          #入口 zuul 應用
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: spring-cloud-zuul
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: spring-cloud-zuul
            template:
              metadata:
                annotations:
                  msePilotAutoEnable: "on"
                  msePilotCreateAppName: spring-cloud-zuul
                labels:
                  app: spring-cloud-zuul
              spec:
                containers:
                  - env:
                      - name: JAVA_HOME
                        value: /usr/lib/jvm/java-1.8-openjdk/jre
                      - name: LANG
                        value: C.UTF-8
                    image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-zuul:1.0.1
                    imagePullPolicy: Always
                    name: spring-cloud-zuul
                    ports:
                      - containerPort: 20000
          
          # A 應用 base 版本,開啟按照機器緯度全鏈路透傳
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            labels:
              app: spring-cloud-a
            name: spring-cloud-a
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: spring-cloud-a
            template:
              metadata:
                annotations:
                  msePilotCreateAppName: spring-cloud-a
                  msePilotAutoEnable: "on"
                labels:
                  app: spring-cloud-a
              spec:
                containers:
                - env:
                  - name: LANG
                    value: C.UTF-8
                  - name: JAVA_HOME
                    value: /usr/lib/jvm/java-1.8-openjdk/jre
                  - name: profiler.micro.service.tag.trace.enable
                    value: "true"
                  image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:0.1-SNAPSHOT
                  imagePullPolicy: Always
                  name: spring-cloud-a
                  ports:
                  - containerPort: 20001
                    protocol: TCP
                  resources:
                    requests:
                      cpu: 250m
                      memory: 512Mi
                  livenessProbe:
                    tcpSocket:
                      port: 20001
                    initialDelaySeconds: 10
                    periodSeconds: 30
                
          # A 應用 gray 版本,開啟按照機器緯度全鏈路透傳
          ---            
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            labels:
              app: spring-cloud-a-gray
            name: spring-cloud-a-gray
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: spring-cloud-a-gray
            strategy:
            template:
              metadata:
                annotations:
                  alicloud.service.tag: gray
                  msePilotCreateAppName: spring-cloud -a
                  msePilotAutoEnable: "on"
                labels:
                  app: spring-cloud-a-gray
              spec:
                containers:
                - env:
                  - name: LANG
                    value: C.UTF-8
                  - name: JAVA_HOME
                    value: /usr/lib/jvm/java-1.8-openjdk/jre
                  - name: profiler.micro.service.tag.trace.enable
                    value: "true"
                  image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-a:0.1-SNAPSHOT
                  imagePullPolicy: Always
                  name: spring-cloud-a-gray
                  ports:
                  - containerPort: 20001
                    protocol: TCP
                  resources:
                    requests:
                      cpu: 250m
                      memory: 512Mi
                  livenessProbe:
                    tcpSocket:
                      port: 20001
                    initialDelaySeconds: 10
                    periodSeconds: 30
                      
          # B 應用 base 版本,關閉無損下線能力
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            labels:
              app: spring-cloud-b
            name: spring-cloud-b
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: spring-cloud-b
            strategy:
            template:
              metadata:
                annotations:
                  msePilotCreateAppName: spring-cloud-b
                  msePilotAutoEnable: "on"
                labels:
                  app: spring-cloud-b
              spec:
                containers:
                - env:
                  - name: LANG
                    value: C.UTF-8
                  - name: JAVA_HOME
                    value: /usr/lib/jvm/java-1.8-openjdk/jre
                  - name: micro.service.shutdown.server.enable
                    value: "false"
                  - name: profiler.micro.service.http.server.enable
                    value: "false"
                  image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-b:0.1-SNAPSHOT
                  imagePullPolicy: Always
                  name: spring-cloud-b
                  ports:
                  - containerPort: 8080
                    protocol: TCP
                  resources:
                    requests:
                      cpu: 250m
                      memory: 512Mi
                  livenessProbe:
                    tcpSocket:
                      port: 20002
                    initialDelaySeconds: 10
                    periodSeconds: 30
                      
          # B 應用 gray 版本,默認開啟無損下線功能
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            labels:
              app: spring-cloud-b-gray
            name: spring-cloud-b-gray
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: spring-cloud-b-gray
            template:
              metadata:
                annotations:
                  alicloud.service.tag: gray
                  msePilotCreateAppName: spring-cloud-b
                  msePilotAutoEnable: "on"
                labels:
                  app: spring-cloud-b-gray
              spec:
                containers:
                - env:
                  - name: LANG
                    value: C.UTF-8
                  - name: JAVA_HOME
                    value: /usr/lib/jvm/java-1.8-openjdk/jre
                  image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-b:0.1-SNAPSHOT
                  imagePullPolicy: Always
                  name: spring-cloud-b-gray
                  ports:
                  - containerPort: 8080
                    protocol: TCP
                  resources:
                    requests:
                      cpu: 250m
                      memory: 512Mi
                  lifecycle:
                      preStop:
                        exec:
                          command:
                            - /bin/sh
                            - '-c'
                            - >-
                              wget http://127.0.0.1:54199/offline 2>/tmp/null;sleep
                              30;exit 0
                  livenessProbe:
                    tcpSocket:
                      port: 20002
                    initialDelaySeconds: 10
                    periodSeconds: 30
                      
          # C 應用 base 版本
          ---
          apiVersion: apps/v1
          kind: Deployment
          metadata:
            labels:
              app: spring-cloud-c
            name: spring-cloud-c
          spec:
            replicas: 2
            selector:
              matchLabels:
                app: spring-cloud-c
            template:
              metadata:
                annotations:
                  msePilotCreateAppName: spring-cloud-c
                  msePilotAutoEnable: "on"
                labels:
                  app: spring-cloud-c
              spec:
                containers:
                - env:
                  - name: LANG
                    value: C.UTF-8
                  - name: JAVA_HOME
                    value: /usr/lib/jvm/java-1.8-openjdk/jre
                  image: registry.cn-shanghai.aliyuncs.com/yizhan/spring-cloud-c:0.1-SNAPSHOT
                  imagePullPolicy: Always
                  name: spring-cloud-c
                  ports:
                  - containerPort: 8080
                    protocol: TCP
                  resources:
                    requests:
                      cpu: 250m
                      memory: 512Mi
                  livenessProbe:
                    tcpSocket:
                      port: 20003
                    initialDelaySeconds: 10
                    periodSeconds: 30
          
          #HPA 配置
          ---
          apiVersion: autoscaling.alibabacloud.com/v1beta1
          kind: CronHorizontalPodAutoscaler
          metadata:
            labels:
              controller-tools.k8s.io: "1.0"
            name: spring-cloud-b
          spec:
             scaleTargetRef:
                apiVersion: apps/v1beta2
                kind: Deployment
                name: spring-cloud-b
             jobs:
             - name: "scale-down"
               schedule: "0 0/5 * * * *"
               targetSize: 1
             - name: "scale-up"
               schedule: "10 0/5 * * * *"
               targetSize: 2
          ---
          apiVersion: autoscaling.alibabacloud.com/v1beta1
          kind: CronHorizontalPodAutoscaler
          metadata:
            labels:
              controller-tools.k8s.io: "1.0"
            name: spring-cloud-b-gray
          spec:
             scaleTargetRef:
                apiVersion: apps/v1beta2
                kind: Deployment
                name: spring-cloud-b-gray
             jobs:
             - name: "scale-down"
               schedule: "0 0/5 * * * *"
               targetSize: 1
             - name: "scale-up"
               schedule: "10 0/5 * * * *"
               targetSize: 2
          ---
          apiVersion: autoscaling.alibabacloud.com/v1beta1
          kind: CronHorizontalPodAutoscaler
          metadata:
            labels:
              controller-tools.k8s.io: "1.0"
            name: spring-cloud-c
          spec:
             scaleTargetRef:
                apiVersion: apps/v1beta2
                kind: Deployment
                name: spring-cloud-c
             jobs:
             - name: "scale-down"
               schedule: "0 2/5 * * * *"
               targetSize: 1 
             - name: "scale-up"
               schedule: "10 2/5 * * * *"
               targetSize: 2
          
          
          # zuul 網關開啟 SLB 暴露展示頁面   
          ---     
          apiVersion: v1
          kind: Service
          metadata:
            name: zuul-slb
          spec:
            ports:
              - port: 80
                protocol: TCP
                targetPort: 20000
            selector:
              app: spring-cloud-zuul
            type: ClusterIP
          
          # a 應用暴露 k8s service
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: spring-cloud-a-base
          spec:
            ports:
              - name: http
                port: 20001
                protocol: TCP
                targetPort: 20001
            selector:
              app: spring-cloud-a
          
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: spring-cloud-a-gray
          spec:
            ports:
              - name: http
                port: 20001
                protocol: TCP
                targetPort: 20001
            selector:
              app: spring-cloud-a-gray
          
          # Nacos Server SLB Service 配置
          ---
          apiVersion: v1
          kind: Service
          metadata:
            name: nacos-slb
          spec:
            ports:
            - port: 8848
              protocol: TCP
              targetPort: 8848
            selector:
              app: nacos-server
            type: LoadBalancer

          結果驗證一:無損下線功能

          由于我們對 spring-cloud-b 跟 spring-cloud-b-gray 應用均開啟了定時 HPA,模擬每 5 分鐘進行一次定時的擴縮容。

          登錄 MSE 控制臺,進入微服務治理中心->應用列表->spring-cloud-a->應用詳情,從應用監控曲線,我們可以看到 spring-cloud-a 應用的流量數據:

          gray 版本的流量在 pod 擴縮容的過程中請求錯誤數為 0,無流量損失。未打標的版本由于關閉了無損下線功能,在 pod 擴縮容的過程中有 20 個從 spring-cloud-a 發到 spring-cloud-b 的請求出現報錯,發生了請求流量損耗。

          結果驗證二:服務預熱功能

          我們在 spring-cloud-c 應用開啟了定時 HPA 模擬應用上線過程,每隔 5 分鐘做一次伸縮,在擴縮容周期內第 2 分鐘第 0 秒縮容到 1 個節點,第 2 分鐘第 10 秒擴容到 2 個節點。

          在預熱應用的消費端 spring-cloud-b 開啟服務預熱功能。

          在預熱應用的服務提供端 spring-cloud-c 開啟服務預熱功能。預熱時長配置為 120 秒。

          觀察節點的流量,發現節點流量緩慢上升。并且能看到節點的預熱開始和結束時間,以及相關的事件。

          從上圖可以看到開啟預熱功能的應用重啟后的流量會隨時間緩慢增加,在一些應用啟動過程中需要預建連接池和緩存等資源的慢啟動場景,開啟服務預熱能有效保護應用啟動過程中緩存資源有序創建保障應用安全啟動從而實現應用上線的流量無損。

          方案介紹 & 實操

          更多方案設計細節,請點擊下方鏈接觀看微服務應用如何實現無損上下線主題直播視頻回放:

          https://yqh.aliyun.com/live/detail/27936

          相關鏈接

          [1]創建 Kubernetes 托管版集群:https://help.aliyun.com/document_detail/95108.htm#task-skz-qwk-qfb

          [2]開通 MSE 微服務治理:https://help.aliyun.com/document_detail/347625.htm#task-2140253

          原文鏈接:https://developer.aliyun.com/article/872430?utm_content=g_1000331001

          本文為阿里云原創內容,未經允許不得轉載。


          主站蜘蛛池模板: 无码欧精品亚洲日韩一区夜夜嗨| 精品一区二区三区在线观看| 亚洲一区二区三区国产精华液| 国产一区二区三区电影| 国产午夜毛片一区二区三区 | 无码人妻精品一区二区三区99不卡| 在线观看国产一区| 欧美成人aaa片一区国产精品| 少妇激情一区二区三区视频| 男人的天堂亚洲一区二区三区| 97精品一区二区视频在线观看| 免费无码毛片一区二区APP| 亚洲国产综合无码一区二区二三区| 日本一区二区高清不卡| 国产亚洲综合精品一区二区三区| 麻豆视传媒一区二区三区| 精品国产日韩亚洲一区91| 韩国福利视频一区二区| 日本高清一区二区三区| 精品国产一区二区三区www| 日本一区二区三区免费高清在线| 夜夜高潮夜夜爽夜夜爱爱一区| 一区二区亚洲精品精华液| 亚洲国产精品无码第一区二区三区| 精品一区二区三区东京热| 日本内射精品一区二区视频| 亚洲无圣光一区二区 | 一区二区在线视频| 亚洲国产精品无码久久一区二区| 成人区精品人妻一区二区不卡| 香蕉在线精品一区二区| 国产一区二区在线看| 91在线视频一区| 天堂一区二区三区在线观看| 精品国产AV无码一区二区三区| 精品三级AV无码一区| 亚洲一区二区三区播放在线| 亚洲日本一区二区三区在线| 亚洲国产综合精品中文第一区| 色噜噜狠狠一区二区| 国产成人AV区一区二区三|