国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

(學習到實踐)七、mongodb測試,php+nginx負載均衡的部署

fyber / 3563人閱讀

摘要:運行容器意外的官方參考地址,多次嘗試命令最終無法運行,帶項時后是狀態,修改配置沒反應日志無報錯退出。目前容器整體情況是主從,個相同一個。后續運行的容器數視情況而定。接下來計劃針對,一些實際應用場景進行實踐驗證。

目標需求:

密碼登錄+容器數據共享,主從復制

1.配置啟動

添加配置文件夾,組織容器命令。

a.官方“未提供”相關信息

從測試容器中匹配搜索得到 mongod.conf.orig,設置可以啟動,網上查找配置項反不能啟動,原因是配置是yaml格式!好像聽說過。百度查詢得到:官方配置說明,網站卡得出奇。

b.啟動配置
[]:~/tmp/dk/mongodb# docker run --rm --name mg1 -d mongo
#默認數據目錄
root@199665dc0d08:/# ls /data/db -lh
total 268K
-rw------- 1 mongodb mongodb   45 Jun 29 23:39 WiredTiger
-rw------- 1 mongodb mongodb   21 Jun 29 23:39 WiredTiger.lock
... ...
# mongod.conf 刪除了一些注釋選項
# Where and how to store data.
storage:
  #數據庫數據存放目錄
  dbPath: /data/db
  #啟用日志文件,默認啟用
  journal:
    enabled: true

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  #數據庫日志存放目錄
  path: /var/log/mongodb/mongod.log
  #靜默模式,過濾掉一些無用的日志信息
  quiet: true

# network interfaces
net:
  port: 27017
  bindIp: 192.168.0.4

security:
  登錄認證
  authorization: "enable"

測試過程中主要錯誤有:

#對應命令 docker run -itd --name mg2 
    -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 
    -v /root/tmp/dk/mongodb/mongod.conf:/etc/mongod.conf 
    -v /root/tmp/dk/mongodb/mongod.log:/var/log/mongod.log 
    -v /root/tmp/dk/mongodb/data:/data/db 
    -d mongo --auth --config /etc/mongod.conf
Error saving history file: FileOpenFailed: Unable to open() file /home/mongodb/.dbshell: Unknown error
#對應命令 ...-d mongo [mongod ]--config (/etc/mongod.conf|空白46)
[main] ***** SERVER RESTARTED *****
[main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols "none"
killing process with pid: 30

這里mongod是處理參數的,沒有不行,去掉d也不行,類似mysqld,結果正常的也就-d mongo mongod --auth結尾的。
其他還有無故錯誤可能是.conf配置的文件路徑有問題,如:從上面得到的默認日志路徑上級文件夾不存在(??bug),官方說明不清不楚,解決問題以減少配置為主,減少啟動參數(逐個測試增加)。

c.運行容器

“意外的”官方參考地址,多次嘗試命令(最終):

[]:~/tmp/dk/mongodb#  docker stop mg2 && docker rm mg2 && rm -rf /root/tmp/dk/mongodb/data/* && 
docker run -itd --name mg2 
    -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 
    -v /root/tmp/dk/mongodb/initdb:/home/mongodb/ 
    -v /root/tmp/dk/mongodb/mongod.conf:/etc/mongod.conf 
    -v /root/tmp/dk/mongodb/data:/data/db 
    -d mongo mongod --auth

無法運行,帶--config項時run后是exited狀態,修改配置沒反應(日志無報錯、退出)。遂去除啟動--config項。但這一切其實只是初始化而已。
后來測試發現是日志看多了,...-d mongo mongod --config /etc/mongod.conf結尾啟動正常。

2.運行處理 a.加密數據、主從復制配置

這里只做簡單配置(還有密鑰文件認證),注意yaml雙引號,添加:

security:
  enableEncryption: true
  #開啟時默認如下
  #encryptionCipherMode: "AES256-CBC"

replication:
  oplogSizeMB: 20  #同步復制的日志大小設置,單位MB
  #All hosts in the replica set must have the same set name.
  replSetName: "repl"
  #secondaryIndexPrefetch: "all"
  #enableMajorityReadConcern: ture
sharding:
  #shardsvr:a shard. The instance starts on port 27018 by default
  #configsvr:a config server. The instance starts on port 27019 by default.  
  clusterRole: "shardsvr" #shardsvr|configsvr選一
  #archiveMovedChunks: false
b.編寫腳本添加

--權限:這邊如果不是root登錄的,要考慮對宿主機用戶、容器用戶使用的相關文件/夾進行授權。這里添加上面配置后容器反終止了,測試后,可以:先運行、再編輯配置文件、執行docker restart。數據庫的關聯操作同mysql,而比mysql更多的在命令交互界面執行。

#!/bin/bash

docker stop mg1 && docker rm mg1 
docker stop mg2 && docker rm mg2 
docker stop mg3 && docker rm mg3 

cp -f  mongodb/mongod.conf mongodb.a/mongod.conf && cp -f  mongodb/mongod.conf mongodb.b/mongod.conf
#!!莫名其妙坑爹的問題
chmod 777 /root/tmp/dk/mongodb/mongod.log /root/tmp/dk/mongodb.a/mongod.log /root/tmp/dk/mongodb.b/mongod.log

rm -rf /root/tmp/dk/mongodb/data/* #&& echo "">/root/tmp/dk/mongodb/mongod.log
docker run --name mg1 
    -p 27017:27017 
    -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 
    -v /root/tmp/dk/mongodb/mongod.conf:/etc/mongod.conf 
    -v /root/tmp/dk/mongodb/mongod.log:/var/log/mongod.log 
    -v /root/tmp/dk/mongodb/data:/data/db 
    -d mongo mongod --config /etc/mongod.conf
    
rm -rf /root/tmp/dk/mongodb.a/data/* #&& echo "">/root/tmp/dk/mongodb.a/mongod.log
docker run --name mg2 
    -p 27018:27017 
    -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 
    -v /root/tmp/dk/mongodb.a/mongod.conf:/etc/mongod.conf 
    -v /root/tmp/dk/mongodb.a/mongod.log:/var/log/mongod.log 
    -v /root/tmp/dk/mongodb.a/data:/data/db 
    -d mongo mongod --config /etc/mongod.conf
    
rm -rf /root/tmp/dk/mongodb.b/data/* #&& echo "">/root/tmp/dk/mongodb.b/mongod.log
docker run --name mg3 
    -p 27019:27017 
    -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 
    -v /root/tmp/dk/mongodb.b/mongod.conf:/etc/mongod.conf 
    -v /root/tmp/dk/mongodb.b/mongod.log:/var/log/mongod.log 
    -v /root/tmp/dk/mongodb.b/data:/data/db 
    -d mongo mongod --config /etc/mongod.conf
3.memcached、php鏡像 a.memcached容器完善

-- memcached容器:使用官方鏡像說明地址,不作配置。

[]:~# docker run --name mc1 -p 11211:11211 -d memcached memcached -m 64
b.目前容器整體情況:
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                               NAMES
ab0d148468aa        memcached             "docker-entrypoint.s…"   4 minutes ago       Up 4 minutes        0.0.0.0:11211->11211/tcp            mc1
531976d71fab        mongo                 "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:27019->27017/tcp            mg3
4e60c4ef93eb        mongo                 "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:27018->27017/tcp            mg2
4319ec04a69a        mongo                 "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:27017->27017/tcp            mg1
2d65770f1e6c        openresty/openresty   "/usr/bin/openresty …"   21 hours ago        Up 21 hours         0.0.0.0:82->80/tcp                  n2
2f0f0357aa69        openresty/openresty   "/usr/bin/openresty …"   21 hours ago        Up 21 hours         0.0.0.0:80->80/tcp                  n1
1c906a7afeba        cffycls/redis5:1.6    "redis-server /etc/r…"   21 hours ago        Up 21 hours         0.0.0.0:6381->6379/tcp              rs
5c71dcc1ab36        cffycls/redis5:1.6    "redis-server /etc/r…"   21 hours ago        Up 21 hours         0.0.0.0:6379->6379/tcp              rm
2b4c57614d22        mysql:8.0             "docker-entrypoint.s…"   2 days ago          Up 31 hours         33060/tcp, 0.0.0.0:3308->3306/tcp   ms
2635980cf576        mysql:8.0             "docker-entrypoint.s…"   2 days ago          Up 31 hours         0.0.0.0:3306->3306/tcp, 33060/tcp   mm

mysql、redis是主從,mongodb3個相同、memcached一個。個人主要是測試,這里不過多配置了。
-- php容器:php7鏡像后續簡化對php(fpm版)的鏡像進行了優化,提交到cffycls/php7,到1.0版+:帶自定義擴展的比官網鏡像小。后續運行的容器數視情況而定。

c.連接php-nginx

docker容器間的連接方式有:
--虛擬名稱連接 --link=xx 的運行參數
--默認虛擬ip連接 容器之間要在一個網段,可以是默認
--自建虛擬ip [默認重啟時ip可能會變化,采取自建加入、固定ip的方式]
這里運行連接比較復雜,多帶帶拿出來。

4.運行php-nginx容器并連接

這里由于web目錄對于容器來講是固定的,所以php、nginx所對應容器的html目錄都統一映射到/root/tmp/dk/html這個公共目錄。

a.php運行

這里重新修改了php的dockerfile,固定ip方便代理。
-- php容器,建立腳本如下:
[注意php-fpm.d/www.conf中監聽端口設為:0.0.0.0,其他可默認]

#docker network create mybridge --subnet=172.1.0.0/16
docker stop p1 p2 p3 && docker rm p1 p2 p3

docker run --name p1 --network=mybridge --ip=172.1.1.11 
    -v /root/tmp/dk/php.a/config:/usr/local/php/etc 
    -v /root/tmp/dk/php.a/fpm.log:/usr/local/php/var/log/php-fpm.log 
    -v /root/tmp/dk/html:/var/www/html 
    -itd cffycls/php7:1.6

docker run --name p2 --network=mybridge --ip=172.1.1.12 
    -v /root/tmp/dk/php.b/config:/usr/local/php/etc 
    -v /root/tmp/dk/php.b/fpm.log:/usr/local/php/var/log/php-fpm.log 
    -v /root/tmp/dk/html:/var/www/html 
    -itd cffycls/php7:1.6

docker run --name p3 --network=mybridge --ip=172.1.1.13 
    -v /root/tmp/dk/php.c/config:/usr/local/php/etc 
    -v /root/tmp/dk/html:/var/www/html 
    -v /root/tmp/dk/php.c/fpm.log:/usr/local/php/var/log/php-fpm.log 
    -itd cffycls/php7:1.6
b.nginx運行

openresty腳本

docker stop n1 n2 && docker rm n1 n2

#--privileged=true 容器內root權限運行
docker run -itd --name n1 -p 8080:80 --network=mybridge 
    --privileged=true 
    -v /root/tmp/dk/openresty.a/conf:/usr/local/openresty/nginx/conf 
    -v /root/tmp/dk/openresty.a/logs:/usr/local/openresty/nginx/logs 
    -v /root/tmp/dk/html:/usr/local/openresty/nginx/html openresty/openresty
docker run -itd --name n2 -p 8082:80 --network=mybridge 
    --privileged=true 
    -v /root/tmp/dk/openresty.b/conf:/usr/local/openresty/nginx/conf 
    -v /root/tmp/dk/openresty.b/logs:/usr/local/openresty/nginx/logs 
    -v /root/tmp/dk/html:/usr/local/openresty/nginx/html openresty/openresty

nginx配置部分:

http {
    upstream fpm_pool{
        server 172.1.1.11:9000 weight=5;
        server 172.1.1.12:9000 weight=2;
        server 172.1.1.13:9000 weight=2; 
    }
    ...
    location ~ .php$ {
            #proxy_pass http://192.168.0.4:9000; 協議不對,不是tcp轉發
            root            html;
            fastcgi_index   index.php;
            fastcgi_pass    fpm_pool;
            # --php-fpm 的工作目錄,對應到共享到容器中的目錄 !!
            fastcgi_param   SCRIPT_FILENAME   /var/www/html$fastcgi_script_name;
            include         fastcgi_params;
        }
    ...
}
c.打印phpinfo

上面已經把相應的php-fpm日志,nginx訪問日志映射到主機,供調試修改運行參數。
直到看到phpinfo的結果頁面,環境完成。

接下來計劃針對,一些實際應用場景進行實踐驗證。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40511.html

相關文章

  • Node.js運行原理、高并發性能測試對比及生態圈匯總

    摘要:模式,單實例多進程,常用于多語言混編,比如等,不支持端口復用,需要自己做應用的端口分配和負載均衡的子進程業務代碼。就是我們需要一個調度者,保證所有后端服務器都將性能充分發揮,從而保持服務器集群的整體性能最優,這就是負載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    kamushin233 評論0 收藏0
  • Node.js運行原理、高并發性能測試對比及生態圈匯總

    摘要:模式,單實例多進程,常用于多語言混編,比如等,不支持端口復用,需要自己做應用的端口分配和負載均衡的子進程業務代碼。就是我們需要一個調度者,保證所有后端服務器都將性能充分發揮,從而保持服務器集群的整體性能最優,這就是負載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    BDEEFE 評論0 收藏0
  • Node.js運行原理、高并發性能測試對比及生態圈匯總

    摘要:模式,單實例多進程,常用于多語言混編,比如等,不支持端口復用,需要自己做應用的端口分配和負載均衡的子進程業務代碼。就是我們需要一個調度者,保證所有后端服務器都將性能充分發揮,從而保持服務器集群的整體性能最優,這就是負載均衡。 showImg(https://segmentfault.com/img/remote/1460000019425391?w=1440&h=1080); Nod...

    TesterHome 評論0 收藏0

發表評論

0條評論

fyber

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<