整合營銷服務商

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

          免費咨詢熱線:

          云原生之服務編排Docker Swarm的使用

          云原生之服務編排Docker Swarm的使用

          、什么是Docker Swarm?

          Docker Swarm 是 Docker 官方提供的容器編排和集群管理工具,用于構建和管理多個 Docker 容器節點組成的集群。通過 Docker Swarm,用戶可以將多臺主機(物理機或虛擬機)組成一個統一的集群,從而實現容器的集中調度、部署和管理。

          關鍵特性包括:

          1. 集群管理: Docker Swarm 允許用戶將多個 Docker 主機組合成一個虛擬的單一主機。這樣,用戶可以通過集群管理工具對整個集群進行統一的管理,而無需關心底層主機的具體情況。
          2. 服務發現: Swarm 提供了內置的服務發現機制,使得容器可以輕松地相互發現并通信。這樣,應用程序的不同部分可以方便地與其他部分進行交互,而無需顯式指定特定容器的 IP 地址或端口號。
          3. 負載均衡: Swarm 集群能夠自動在多個節點上進行負載均衡,確保容器應用程序能夠以高可用性和高性能的方式運行。
          4. 滾動更新: Swarm 支持滾動更新容器服務,可以平滑地升級應用程序的不同部分,同時保持應用的可用性。
          5. 安全: Swarm 提供了安全的通信機制和訪問控制,確保集群中的通信和數據傳輸都是受保護的。

          總之,Docker Swarm 提供了一種簡單但強大的方式來管理容器化應用程序的部署和擴展,在生產環境中被廣泛應用于構建容器集群,并為應用程序的高可用性和可擴展性提供支持。

          二、Docker Swarm集群搭建

          (一)創建多節點集群

          1、查看Swarm命令

          [root@centos-7 ~]# docker swarm --help
          
          Usage:    docker swarm COMMAND
          
          Manage Swarm
          
          Commands:
            ca          Display and rotate the root CA
            init        Initialize a swarm
            join        Join a swarm as a node and/or manager
            join-token  Manage join tokens
            leave       Leave the swarm
            unlock      Unlock swarm
            unlock-key  Manage the unlock key
            update      Update the swarm
          
          Run 'docker swarm COMMAND --help' for more information on a command.

          可以看到其中有一個 init的命令,這就是初始化一個Swarm,我們再看看這個init的參數:

          [root@centos-7 ~]# docker swarm init --help
          
          Usage:    docker swarm init [OPTIONS]
          
          Initialize a swarm
          
          Options:
                --advertise-addr string                  Advertised address (format: <ip|interface>[:port])
                --autolock                               Enable manager autolocking (requiring an unlock
                                                         key to start a stopped manager)
                --availability string                    Availability of the node
                                                         ("active"|"pause"|"drain") (default "active")
                --cert-expiry duration                   Validity period for node certificates
                                                         (ns|us|ms|s|m|h) (default 2160h0m0s)
                --data-path-addr string                  Address or interface to use for data path traffic
                                                         (format: <ip|interface>)
                --data-path-port uint32                  Port number to use for data path traffic (1024 -
                                                         49151). If no value is set or is set to 0, the
                                                         default port (4789) is used.
                --default-addr-pool ipNetSlice           default address pool in CIDR format (default [])
                --default-addr-pool-mask-length uint32   default address pool subnet mask length (default 24)
                --dispatcher-heartbeat duration          Dispatcher heartbeat period (ns|us|ms|s|m|h)
                                                         (default 5s)
                --external-ca external-ca                Specifications of one or more certificate signing
                                                         endpoints
                --force-new-cluster                      Force create a new cluster from current state
                --listen-addr node-addr                  Listen address (format: <ip|interface>[:port])
                                                         (default 0.0.0.0:2377)
                --max-snapshots uint                     Number of additional Raft snapshots to retain
                --snapshot-interval uint                 Number of log entries between Raft snapshots
                                                         (default 10000)
                --task-history-limit int                 Task history retention limit (default 5)

          可以看到它有很多的參數,其中第一個就是將本機的地址添加進去,讓自己成為一個Manager節點,這樣其它的節點都可以知道這個節點的存在。

          2、創建一個Manager節點

          在此之前我們應該先知道自己本機的ip,以便于--advertise-addr string 這個參數使用,查看本機ip:

          然后就可以初始化Manager節點:

          [root@centos-7 ~]# docker swarm init --advertise-addr=192.168.0.108
          Swarm initialized: current node (sz7bfcmk637qhqfvzqhdnk3t2) is now a manager.
          
          To add a worker to this swarm, run the following command:
          
              docker swarm join --token SWMTKN-1-0zzpk3xqq2ykb5d5jcd6hqeimckhrg5qu82xs7nw2wwnwyjmzg-9tmof9880m9r92vz5rygaa42e 192.168.0.108:2377
          
          To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

          可以看到已經創建了一個swarm manager節點--advertise-addr參數的值192.168.0.108是自己的ip,相當于將自己加入到swarm中。它也說明了其它worker加入的方式。

          3、創建一個worker節點

          另外再開啟一臺虛擬機,將這臺機器加入到swarm中成為worker節點:

          [root@localhost ~]#  docker swarm join --token SWMTKN-1-0zzpk3xqq2ykb5d5jcd6hqeimckhrg5qu82xs7nw2wwnwyjmzg-9tmof9880m9r92vz5rygaa42e 
          192.168.0.108:2377
          This node joined a swarm as a worker.

          可以看到已經成功了。

          4、查看節點狀態

          注意的是查看節點狀態只能在manager節點那臺機器上查看,普通節點無法執行查看命令:

          [root@centos-7 ~]# docker node ls
          ID                            HOSTNAME                STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
          sz7bfcmk637qhqfvzqhdnk3t2 *   centos-7                Ready               Active              Leader              19.03.5
          89tezea9ltn6mqek7b48gtve7     localhost.localdomain   Ready               Active                                  18.09.7

          可以看到有兩臺機器了。

          (二)多節點容器創建

          上面我們已經將節點創建好了,現在可以在這些節點上創建容器了,那么就需要看看docker service 的幫助信息:

          [root@centos-7 ~]# docker service --help
          
          Usage:    docker service COMMAND
          
          Manage services
          
          Commands:
            create      Create a new service
            inspect     Display detailed information on one or more services
            logs        Fetch the logs of a service or task
            ls          List services
            ps          List the tasks of one or more services
            rm          Remove one or more services
            rollback    Revert changes to a service's configuration
            scale       Scale one or multiple replicated services
            update      Update a service
          
          Run 'docker service COMMAND --help' for more information on a command.

          可以看到有create這個命令,可以這樣理解,docker server create 相當于docker run 就是創建容器,只不過在swarm中是不同的表現方式。

          1、manager節點上創建容器

          [root@centos-7 docker]# docker service create --name demo busybox /bin/sh -c "while true; do sleep 3600; done "
          image busybox:latest could not be accessed on a registry to record
          its digest. Each node will access busybox:latest independently,
          possibly leading to different nodes running different
          versions of the image.
          
          edqgwqjka7ceyym9tg4gr9uim
          overall progress: 1 out of 1 tasks 
          1/1: running   
          verify: Service converged 



          可以查看是否創建成功:

          [root@centos-7 docker]# docker service ls
          ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
          edqgwqjka7ce        demo                replicated          1/1                 busybox:latest      

          可以具體看這個service的內容:

          [root@centos-7 docker]# docker service ps demo
          ID                  NAME                IMAGE               NODE                    DESIRED STATE       CURRENT STATE           ERROR    PORTS
          lshgq4gfi3cv        demo.1              busybox:latest      localhost.localdomain   Running             Running 2 minutes ago   

          2、水平擴展

          • 水平擴展

          之前接觸或scale,它可以幫助我們創建多個service,這里也是可行的:

          [root@centos-7 docker]# docker service scale demo=5
          demo scaled to 5
          overall progress: 5 out of 5 tasks 
          1/5: running   
          2/5: running   
          3/5: running   
          4/5: running   
          5/5: running   
          verify: Service converged 

          已經有5個demo服務的容器正在運行了??梢韵瓤纯磗erverice:

          [root@centos-7 docker]# docker service ls
          ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
          edqgwqjka7ce        demo                replicated          5/5                 busybox:latest      

          再看看具體的容器數量:

          [root@centos-7 docker]# docker service ps demo
          ID                  NAME      IMAGE               NODE                    DESIRED STATE       CURRENT STATE       ERROR   PORTS
          lshgq4gfi3cv        demo.1   busybox:latest      localhost.localdomain   Running             Running 3 hours ago                       
          vvxl3f5p1w40        demo.2   busybox:latest      centos-7                Running             Running 3 hours ago                       
          q5imz8pqygbv        demo.3   busybox:latest      centos-7                Running             Running 3 hours ago                       
          ih6e2bhzzru2        demo.4   busybox:latest      localhost.localdomain   Running             Running 3 hours ago                       
          l32ziu7ygoqw        demo.5   busybox:latest      centos-7                Running             Running 3 hours ago  

          可以看到5個容器在不同的節點上,其中有3個容器在manager節點,有兩個在worker節點上。

          當然,每一個節點都可以自己查看自己目前運行的容器,比如worker節點查看自己運行容器的數量:

          [root@centos-7 docker]# docker ps
          CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS         PORTS        NAMES
          fbf77922d24c        busybox:latest      "/bin/sh -c 'while t…"   3 hours ago         Up 3 hours              demo.5.l32ziu7ygoqwapu4rbazqhyej
          51e0e953688f        busybox:latest      "/bin/sh -c 'while t…"   3 hours ago         Up 3 hours              demo.3.q5imz8pqygbv5fw1r2wyt84ps
          6f2b6d5f670c        busybox:latest      "/bin/sh -c 'while t…"   3 hours ago         Up 3 hours              demo.2.vvxl3f5p1w40oc82wvm2yq01q

          只需要通過docker ps命令即可。

          • 修復

          scale在swarm中除了水平擴展外,還有一個作用,那就是修復作用,比如將某一個節點中的容器刪除掉,那么很快swarm中發覺并進行修復,數量保持原先的樣子。

          假如現在刪除worker中的一個容器:

          [root@localhost ~]# docker rm -f a8c8e6a95978
          a8c8e6a95978

          我們在manager節點中查看容器情況:

          [root@centos-7 docker]# docker service ps demo
          ID            NAME        IMAGE               NODE               DESIRED STATE   CURRENT STATE       ERROR      PORTS
          lshgq4gfi3cv  demo.1     busybox:latest      localhost.localdomain   Running     Running 3 hours ago                                             
          vvxl3f5p1w40  demo.2     busybox:latest      centos-7                Running     Running 3 hours ago                                             
          q5imz8pqygbv  demo.3     busybox:latest      centos-7                Running    Running 3 hours ago                                             
          zkoywf8h19p1  demo.4     busybox:latest      localhost.localdomain   Running   Starting less than a second ago                                 
          ih6e2bhzzru2 \_ demo.4  busybox:latest      localhost.localdomain   Shutdown  Failed 23 seconds ago  "task: non-zero exit (137)"   
          l32ziu7ygoqw  demo.5     busybox:latest      centos-7                Running    Running 3 hours ago                                             

          可以看到紅色就是我們刪掉的容器,但是后面它又馬上補充了一個,保持了整個系統的穩定性。

          三、wordpress部署

          (一)單容器啟動方式

            如何使用Swarm進行部署wordpress呢?wordpress涉及到數據庫容器以及wordpress應用容易,那么這兩個容器很有可能是不在一臺機器的,也就是使用Swarm中兩個容器是分配到不同的節點之上的。

            首先,將之前的service進行移除:

          [root@centos-7 docker]# docker service rm demo
          demo

          1、創建overlay網絡

          需要將這些service部署在一個overlay網絡中,所以需要有個overlay網絡。所以現在manager節點上創建這個網絡:

          [root@centos-7 docker]# docker network create -d overlay demo
          xcjljjqcw26b2xukuirgpo6au

          可以查看:

          [root@centos-7 docker]# docker network ls
          NETWORK ID          NAME                DRIVER              SCOPE
          xcjljjqcw26b        demo                overlay             swarm

          值得注意的是其他節點上現在并沒有這個網絡,那么其它節點又是怎么連上這個網絡的呢?

          2、啟動數據庫服務

          [root@centos-7 docker]# docker service create --name mysql --env MYSQL_ROOT_PASSWORD=root --env MYSQL_DATABASE=wordpress --network demo 
          --mount type=volume,source=mysql-data,destination=/var/lib/mysql mysql:5.7.24
          eirarnex6suqa4uqzgowncigv
          overall progress: 1 out of 1 tasks 
          1/1: running   [==================================================>] 
          verify: Service converged 

          可以看看這個服務的詳情以及位于哪一個節點上:

          [root@centos-7 docker]# docker service ls
          ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
          eirarnex6suq        mysql               replicated          1/1                 mysql:5.7.24        
          [root@centos-7 docker]# docker service ps mysql
          ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE     ERROR      PORTS
          c4a4lggjmvuf        mysql.1             mysql:5.7.24        centos-7            Running             Running about a minute ago   

          3、啟動wordpress服務

          接著在manager節點上啟動wordpress服務

          [root@centos-7 docker]#  docker service create --name wordpress -p 80:80 --env WORDPRESS_DB-PASSWORD=root \
           --env WORDPRESS_DB_HOST=mysql --network demo \
           --mount type=volume,source=wordpress-config,destination=/var/www/html wordpress

          上述中 --mount參數將容器中的配置等一系列的文件映射出來了,是方便修改容器中配置文件,修復數據庫連接不上的錯誤,詳情查看:

          https://www.cnblogs.com/shenjianping/p/12268190.html

          4、測試

          現在可以進行訪問本機的80端口進行測試了

          (二)Docker Stack部署

          這種部署方式就是使用docker-compose.yml文件來進行部署應用,而上面那種方式就是每次手動單啟容器。

          • 查看docker stack的命令
          [root@centos-7 wordpress-stack]# docker stack --help
          
          Usage:    docker stack [OPTIONS] COMMAND
          
          Manage Docker stacks
          
          Options:
                --orchestrator string   Orchestrator to use (swarm|kubernetes|all)
          
          Commands:
            deploy      Deploy a new stack or update an existing stack
            ls          List stacks
            ps          List the tasks in the stack
            rm          Remove one or more stacks
            services    List the services in the stack
          
          Run 'docker stack COMMAND --help' for more information on a command.

          可以看到docker stack 的命令不是很多,第一個就是部署服務,一個docker-compose.yml就是一個服務,當然這個文件里面可能包含多個service。下面以實例來說明:

          • docker-compose.yml文件
          version: '3'
          
          services:
          
            web:
              image: wordpress
              ports:
                - 8080:80
              environment:
                WORDPRESS_DB_HOST: mysql
                WORDPRESS_DB_PASSWORD: root
              networks:
                - my-network
              depends_on:
                - mysql
              deploy:
                mode: replicated
                replicas: 3      #開啟3個web服務
                restart_policy:
                  condition: on-failure
                  delay: 5s
                  max_attempts: 3
                update_config:
                  parallelism: 1
                  delay: 10s
          
            mysql:
              image: mysql:5.7.24
              environment:
                MYSQL_ROOT_PASSWORD: root
                MYSQL_DATABASE: wordpress
              volumes:
                - mysql-data:/var/lib/mysql
              networks:
                - my-network
              deploy:
                mode: global  #只能有一個mysql的服務
                placement:
                  constraints:
                    - node.role==manager #服務只能部署在manager節點上
          
          volumes:
            mysql-data:
          
          networks:
            my-network:
              driver: overlay   #注意這里可能服務在不同的主機上,需要使用overlay網絡
          • 部署wordpress stack
          [root@centos-7 wordpress-stack]# docker stack deploy wordpress --compose-file=docker-compose.yml
          Creating network wordpress_my-network
          Creating service wordpress_web
          Creating service wordpress_mysql
          • 查看stack
          [root@centos-7 wordpress-stack]# docker stack ls
          NAME                SERVICES            ORCHESTRATOR
          wordpress           2                   Swarm
          • 查看stack中的服務
          [root@centos-7 wordpress-stack]# docker stack ps wordpress
          
          • 移除stack
          [root@centos-7 wordpress-stack]# docker stack rm wordpress
          Removing service wordpress_mysql
          Removing service wordpress_web
          Removing network wordpress_my-network

          總結

          Docker Swarm 是 Docker 官方提供的容器編排和集群管理工具,用于構建和管理多個 Docker 容器節點組成的集群。它提供集群管理、服務發現、負載均衡、滾動更新和安全等關鍵特性,使得用戶能夠輕松地部署、擴展和管理容器化應用程序,從而實現高可用性、高性能和高效率的運行環境。下一篇文章我將介紹 K8s相關的內容,希望大家關注更新!我會分享更多云原生相關的內容

          月26日晚,crytek突然發文,官宣《孤島危機4》項目正式啟動。這款燒機軟件終于迭代更新了!如今的4代的發售,能否還能像多年前的初代一樣,引發業界的轟動與玩家議論硬件的熱潮?

          我依稀記得,2012年第一次玩《孤島危機2》的時候,其畫面和cg給我帶來的巨大沖擊,一切都那么栩栩如生,仿佛這就是畫面的極致,已經再難提升。至于游戲的劇情,那實在是很次要的事情。與朋友聊天交流,都會因為自家的電腦能夠帶動這款游戲,而收獲羨慕的目光。當時進入游戲的logo和EA的標志,也給我留下了深刻的印象,只是在這之后就沒有見到了。

          這只大眼睛,其實就是大名鼎鼎的cry engine(簡稱“CE”),由crytek開發。創立于97年的crytek,從誕生伊始就致力于游戲引擎的研發,目標十分明確:“要做出一款無縫切換室內外場景,光影和互動都十分頂級的引擎?!?/p>

          在1999年的E3展會上,crytek展示了一款名叫“恐龍島”的demo,用于展現他們新研發引擎強大的渲染能力,也借此尋求合作伙伴。憑借著其他引擎望塵莫及的遠景渲染和水面反射,這款demo在當時的E3展上的表現驚艷一眾產商。提供給他們展位的英偉達直接和他們簽約合作,并提供技術支持。Crytek這開局可謂是順風順水,入行兩年,就抱上英偉達的大腿了。

          “恐龍島”demo畫面

          在得到英偉達提供的技術和資金支持后,我們的老朋友育碧也找到了他們,表示想要將E3演示demo“恐龍島”做成一個完整的游戲。在這款游戲中,cry engine正式登場,這款游戲也就是日后大名鼎鼎的《孤島驚魂(farcry)》。初代《孤島驚魂》的光影和水面效果,是名副其實的業界頂尖。在有著優秀大場景的同時,FPS中的粒子效果、槍械細節也得以兼顧。《孤島驚魂》作為《孤島危機》的精神前作,在遙遠的2004年,理所當然地成為了一代硬件殺手。

          在crytek的官網就能看到,最早的游戲就是《孤島驚魂》

          同樣是在2004年,EA向crytek拋出了橄欖枝,美國的大款和法國的窮鬼你選誰?Crytek爽快干脆地加入了EA,準備干一票大的:他們會將當前所有的引擎技術投入到下一款作品中,為此他們需要開創一個嶄新的IP,于是直接將《孤島驚魂》賣給了育碧。而自己則在EA的支持下,投入到了《孤島危機》這個全新系列的開發中。

          需要注意的是,EA并非是將crytek收購,二者是合作關系(不然crytek已經倒閉了(* ̄▽ ̄)):EA為crytek提供資金支持,但要求他們的作品交由EA發行。直到今天,crytek仍然是獨立工作室,不過在全球各地開分部的工作室確實也很少見。

          一般的第一方游戲工作室都會考慮到游戲登陸多平臺的可能性,在主機性能有限的前提下,會刻意地控制圖形技術的使用,以保證不同平臺的體驗趨于平衡。但crytek這幫技術宅并沒有這么想,他們只是想做出來一款劃時代的游戲。很多的圖形技術玩家們都是第一次聽說:容積云、動態軟光影、實時環境貼圖、視差貼圖、光束效果,這些名詞帶來超越時代畫面的同時,也意味著2007年,市面上根本沒有家用pc能夠在特效全開的情況下流暢運行這款游戲。至于ps和xbox平臺?想都別想!他們根本就沒做主機版。

          《孤島危機》游戲畫面

          《生化奇兵》游戲畫面

          《光環3》游戲畫面

          《半條命2》游戲畫面

          《孤島危機》是一款劃時代的游戲,不僅有著當時最好的畫面,也有著優良的物理效果,細節方面,載具有著部位傷害、葉片經過時會產生物理碰撞。這樣優秀的物理互動和DICE的寒霜倒是有異曲同工之妙。但EA自家招牌的寒霜引擎直到次年的《戰地:叛逆連隊》中才正式亮相。

          “寒霜引擎”的初登場:《戰地:叛逆連隊》

          優秀的游戲并不意味著優秀的銷量,如此高的運行門檻讓眾多玩家望而卻步。加上當時的互聯網剛剛普及,游戲的數字版還未流行,2007年成為了盜版游戲泛濫的一年,而《孤島危機》則“榮膺”當年“盜版最多游戲”的桂冠。游戲的銷量并不好,首發半個月才賣出8萬套。然而是金子總會發光,在這樣的環境下,憑借著自身過硬的素質以及新硬件的迭代更新,游戲的銷量在三年后也達到了300萬份,這些都是后話了。

          2021年推出的《孤島危機》重制版

          作為crytek真正意義上的第一款游戲,《孤島危機》無疑是成功的,雖然因為盜版問題,市場損失不小,但還是大賺一筆,更是憑著當時“最強游戲畫面”的名頭打響了IP、甚至公司的知名度。

          在2008年到2011年這段時間里,除了將自家的cry engine升級到3.0版本、繼續招牌《孤島危機》的續作開發外,crytek還在全球各地陸陸續續開設了六家工作室。與此同時,已經有十余家上市公司在使用他們的引擎。相較于2.0,CE3.0少了很多黑科技,更注重對上一代引擎的優化?!豆聧u危機2》也確實展現了他們努力的結果:只要你電腦帶得動,那么從頭到尾都不會卡。

          2011年的《孤島危機2》讓我們看到了crytek的改變——為了兼顧大部分的pc玩家和主機平臺,相較于一代,物理效果反而有所下降,游戲的過程更加線性,場景從海島換成了紐約的鋼鐵森林,有了更多的COD式的大場面演出。這種取舍可以理解,畢竟是要吃飯的嘛,開了這么多工作室,最后如果還像一代那樣曲高和寡,那就要喝西北風了。

          這一轉變十分成功,《孤島危機2》交出的成績十分優秀,僅僅用時3個月就達到了第一代3年的銷量,當然,續作也繼續蟬聯了當年“盜版最多游戲”的“殊榮”。Crytek憑著這些錢將自己的分部擴張到了9個,并同時進行了3款游戲的開發。

          《孤島危機2》還推出了“限量版”,包含了一些獨特的游戲道具

          2013年,前文提到的三款游戲同時發售,分別是《戰臉》《羅馬之子》和《孤島危機3》,款式雖多,卻沒有爆款?!稇鹉槨凡粶夭换?,《羅馬之子》由于預算問題,從原來的體感操作變成了QTE,而《孤島危機3》也未達到EA的預期。游戲的場景和框架幾乎沒有改變,只是多了弓箭、黑客這些細枝末節的系統。放眼望去,能讓人眼前一亮的,還是那超越時代的畫面。但比起07年時一代給玩家的震撼,2013年的《孤島危機3》確實沒有那種打開新世界大門的感覺了。

          自上而下,《戰臉》《羅馬之子》和《孤島危機3》

          2013年可以說是crytek的轉折點。一系列的擴張和三部作品平平無奇的成績讓crytek入不敷出,在2014年就出現了拖欠員工工資的情況,之后更是陷入了裁員、關閉分部、賣版權這樣的窘境,一度瀕臨破產的邊緣。關鍵時期還是靠亞馬遜注資拉了一把,但就在這之后,crytek也傳出過拖欠員工工資的情況。如今只剩下了總部和兩個分部。在褪下最強游戲畫面的光環后,crytek的境遇似乎有些凄慘。當初引以為傲的引擎畫面,在這些年也被re、寒霜這些后起之秀迎頭趕上,crytek似乎已經逐漸“墮入凡塵”。

          Cry engine曾經的優勢面對后來者已經蕩然無存

          13年之后,crytek基本上沒有什么大動作,除了在2016年的VR投資熱中出了兩款VR游戲,最近唯一為玩家所知的便是《獵殺:對決》,以及《孤島危機》的新引擎重置,其實也就是換成了高p畫面,玩法并沒有任何的創新。

          《獵殺:對決》

          正因這漫長的“蟄伏期”,最近官宣的《孤島危機4》立刻引起玩家們的關注,上一部系列新作不知不覺已經快要十年了。在畫質趨同的如今,各大游戲引擎成熟。crytek已經失去了過去最大的倚仗,也不可能再像過去一樣,最高畫質在pc上俯瞰眾生,游戲必將登陸全平臺。如果要在畫面上再次實現飛躍,VR也許是唯一的途徑。無論如何,游戲最終還是需要依靠自身的游戲性才能撐起一片天,crytek現在需要的也許并不是程序員,而是一位優秀的游戲設計師。

          由于現在不斷提倡網絡安全甚至已經成為一個國家的政策性要求,出臺網絡安全法,推出網絡安全等級保護制度,可見安全的重要性。而網站作為中小型企業對外提供服務的一個入口,重要性就不容小覷,另外目前網絡上出現了很多安全方面的工具,網站漏掃的門檻越來越低,隨便一個開源的工具就可以對站點進行漏掃,若發現漏洞進而利用就可能導致比較重大的安全事故。所以針對中小型站點的安全保衛戰就需要提上日程,增加一些措施手段保障站點的安全性,WAF就是一種比較合適的加固方案。

          什么是WAF

          Web應用程序防火墻,Web Application Firewall,簡稱WAF。是一種提供保護Web站點免受惡意攻擊和數據泄露作用的產品,它通常位于Web應用程序和網絡之間,監控和過濾HTTP流量,以便檢測和阻止潛在的攻擊。WAF主要有以下三種載體或者說方式提供服務

          • 硬件WAF,廠家提供專用的物理設備部署在網絡中,對網站的流量進行過濾防護。
          • 軟件WAF,以軟件的形式安裝在自有的服務器上面,對網站的流量進行過濾防護。
          • 云WAF,云廠商提供的服務,一般web也是基于云的方式部署的,作為云服務提供商額外提供的服務,也有是跟CDN服務結合的。

          硬件WAF一般不適合中小型站點,投入成本較高,云WAF比較多跟云的場景結合現階段也是成本比較高的選擇,軟件WAF的方式現在市面上有基礎免費版和按需增值版供選擇,比較適合中小型站點,可以選擇基礎免費版提高站點的安全門檻而不是在網絡世界里裸奔,后續視業務的發展情況按需調整為更安全能力更強的收費版。

          軟件WAF簡介

          調研了市面上面的產品,從出品方的角度有專業公司和個人在運營的產品,主要有以下幾種:

            • 南墻WAF
              • 一款工業級免費、高性能、高擴展,支持AI和語義引擎的Web應用和API安全防護產品。
              • 安裝簡單,提供主機板和docker(容器)安裝方式,均通一鍵腳本方式。
            • 雷池WAF
              • 基于智能語義分析的下一代WAF應用防火墻。
              • 安裝簡單,提供一鍵安裝腳本。
            • 寶塔WAF
              • 超高自由度的自定義攔截規則和可靈活配置各種限制訪問,有效防CC攻擊、防惡意采集、防刷接口等常見攻擊和黑客滲透測試行為,為您的業務網站保駕護航。
              • 安裝簡單,提供一鍵安裝腳本。
            • aihttps
              • 首款基于機器學習、自主對抗未知攻擊的高性能WEB應用防火墻( SSL WAF),源碼完整并且兼容ModSecurity正則規則。
              • 安裝步驟簡單,需按官網文檔要求,暫未提供腳本。
            • httpwaf
              • httpwaf是一款永久免費的web應用防火墻,重點對抗未知攻擊。
              • 安裝方式直接下載二進制文件運行(對系統環境有要求)

          安裝實踐

          主要對前三種軟件南墻、雷池、寶塔WAF進行實際安裝體驗,整個體驗過程主要基于事前、事中、事后三個邏輯環節進行。

          • 安裝前準備階段

          安裝前相關文檔獲取,三款軟件官網均具備完善的文檔介紹,產品均在持續迭代更新版本,還提供了溝通交流反饋的渠道如微信群,寶塔和雷池還提供了demo站提前體驗。

            • 寶塔waf,文檔地址,https://www.kancloud.cn/kern123/cloudwaf/3198565 ,演示demo,https://btwaf-demo.bt.cn:8379/c0edce7a,安裝版本v4.6
            • 雷池waf,文檔地址,https://docs.waf-ce.chaitin.cn/,演示demo,https://demo.waf-ce.chaitin.cn:9443/dashboard,最新版本,[6.2.0] - 2024-06-27
            • 南墻waf,文檔地址,https://waf.uusec.com/#/?id=main,安裝版本,4.5.0
          • 實際安裝

          三款軟件均提供一鍵安裝腳本,都是通過容器的方式運行,需要具備容器運行環境和80、443端口未被其他程序占用。安裝簡單官方文檔介紹翔實就不做過多介紹。

          • 事后安裝體驗

          從后臺功能點的角度

          相同點:三款軟件均提供了站點整體的運行情況如訪問量、攔截量、QPS等運行數據和針對站點進行防護策略的配置;都有免費版和其他收費版本的差異。免費版的差異點:

                • 寶塔WAF提供了端口轉發和網站加速,滿足一些端口轉發和站點靜態資源加速的需求,另外目前公測階段免費版還提供了攻擊大屏的功能,較直觀的展示目前的的攻擊攔截情況。還有個不錯的功能就是支持直接禁止境外ip訪問。
                • 南墻WAF,提供API既是可以自行編寫防護規則。

          從實際防護效果角度

          1、簡單手動模擬構建異常攻擊請求,均能被攔截,如下面這些請求,

          模擬 SQL 注入攻擊: https://站點地址/?id=1+and+1=2+union+select+1

          模擬 XSS 攻擊: https://站點地址/?id=

          模擬路徑穿越攻擊: https://站點地址/?id=../../../../etc/passwd

          模擬代碼注入攻擊: https://站點地址/?id=phpinfo();system('id')

          2、利用BlazeHTTP工具進行評測

          針對同一個站點,依次經過雷池、寶塔、南墻WAF進行防護后,利用BlazeHTTP工具進行掃描的結果如下,從結果上來看雷池準確率最高,寶塔最低。

          總結

            • 三款軟件均有在持續迭代更新,使用過程若有bug或者問題應該都會有渠道反饋解決。從背景上來說雷池和南墻出品方都是專業的安全公司相對寶塔來說公司基因上面會更有優勢。
            • 若要說些優缺點的話,從簡要體驗結果來看
              • 南墻,優點,后端web支撐負載均衡,支持自定義API這個有點技術門檻就是了。缺點,修改密碼的時候動態口令一定需要開啟,安卓用戶使用 FreeOTP 不好安裝。
              • 寶塔,優點,支持端口轉發,支持一鍵禁用境外ip訪問,可以支持查看訪問日志。
              • 雷池,優點,防護效果最好,運行環境可以支持80、443已被占用的情形,功能強但是不少都是需要收費版才支持。

          主站蜘蛛池模板: 一区二区三区在线观看免费| 久久婷婷色综合一区二区| 国产成人久久一区二区三区| 国产成人一区二区精品非洲| 色噜噜狠狠一区二区| 久久无码精品一区二区三区| 搜日本一区二区三区免费高清视频 | 国精产品一区一区三区有限公司| 国产一区二区高清在线播放| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 少妇无码一区二区三区免费| 精品无码AV一区二区三区不卡| 成人精品一区二区三区不卡免费看| 精品一区二区三区在线视频| 国产亚洲日韩一区二区三区| 国产91一区二区在线播放不卡| 日韩伦理一区二区| 亚洲日本久久一区二区va| 国产精品乱码一区二区三区| ...91久久精品一区二区三区| 91一区二区视频| 久久国产一区二区| 日韩精品无码一区二区视频| 国产一区二区三区在线观看精品| 天天爽夜夜爽人人爽一区二区| 精品一区狼人国产在线| 夜夜高潮夜夜爽夜夜爱爱一区| 日本精品视频一区二区三区 | 国产av一区二区精品久久凹凸| 无码午夜人妻一区二区不卡视频 | 国产经典一区二区三区蜜芽 | 小泽玛丽无码视频一区| 波霸影院一区二区| 国产精品一区二区三区99| 99国产精品一区二区| 亚洲AV无码一区二区三区系列| 无码精品一区二区三区免费视频| 在线中文字幕一区| 国产一区二区精品在线观看| 日韩有码一区二区| 中文字幕乱码一区二区免费|