チェッカー群積分
11064 ワード
イントロ
#30DaysOfAppwrite 月の長いイベントは、開発者にAppWriteの機能のすべてをウォークスルーすることに集中しています.一緒に我々はまた、これらの概念は、実際の世界のアプリを構築するときに適用する方法を示すために完全に紹介された媒体のクローンを構築する予定です.また、私たちと一緒に従う開発者のためのいくつかのエキサイティングな賞を持っている!
Docker swarmでの配備
日28へようこそ👋 ! あなたのアプリは一晩の成功になっている.誰もがあなたのアプリケーションを使用して、有名人からお友達に.あなたはこれを予想して、あなたのアプリは要求の圧倒的な数に追いつくことができない状況で自分自身を見つける.フレット!AppWriteは正確にこれを念頭に置いて設計されました.既に知っているように、AppWriteは我々の最優先事項の一つとしてスケーラビリティを持つステートレスのマイクロサービスのセットとして設計されています!たくさんのオーケストレーションサービスでスケーラビリティを達成する多くの方法がある間、我々は最も直観的なものの1つを見ます.今日、私たちはDocker SwarmでAppwriteを水平に議論するつもりです.
何がDocker群れですか?
Docker SwarmはDocker CLIの右側に構築されたコンテナ・オーケストレーションツールで、ホストのクラスタへのDockerサービスを展開することができますDocker Compose . これはswarmモードとして知られていますno longer being developed スタンドアロンの製品として.それをビルドするとDockerの群れは素晴らしいと書くCompose specification , 私たちがappwriteのを使うことができるという意味
docker-compose
スワップ(ここではいくつかの変更を伴う)に展開する設定.そのシンプルさはすぐに開始することができます!swarmでAppwriteを展開する
必要条件
この例では次のようになります.
Docker is installed それぞれのホストで.
群れの作成
我々は、我々が「リーダー」でありたいどのホストにでも群れをつくります.スワームを初期化します.
$ docker swarm init
Swarm initialized: current node (7db8w7aurb7qrhvm0c0ttd4ky) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0wagrl3qt4loflf9jcadj8gx53fj2dzmbwaato7r50vghmgiwp-cvo3jflyfh2gnu46pzjtaexv2 your.ip.addr.ess:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
さあ、他のシステム(s)で提供されたコマンドを実行しましょうThis node joined a swarm as a worker.
一旦完了すると、「リーダー」ホストに戻ることができます.$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
yfl7xsy5birfbpiw040chef67 appwrite Ready Active 20.10.6
op3nf4ab6f5v1lulwkpyy2a83 * appwrite_leader Ready Active Leader 20.10.6
更新
docker-compose.yml
今、群れは準備ができているので、我々はいくつかの変更をする必要がありますdocker-compose.yml
それはスワップ互換性を確認します.Docker Swarmのボリュームはデフォルトでホストの間で共有されないので、ホストの間でディレクトリを共有するためにNFSを使用します.共有データは様々な方法で実現することができますが、これは始めるのが最も簡単です.そうするために、NFSマウントですべての名前付きボリュームを取り替えます.デジタルオーディオgreat guide NFSの設定については、詳細はそのガイドを参照してください.
我々はこれらのNFSボリュームを我々の「リーダー」ホストに設定して、それらのフォルダを群れの他のホストと共有するつもりです.以下のディレクトリを使用して、NFS経由でDockerボリュームと共有を置換します.
mkdir -p /nfs/{mariadb,redis,cache,uploads,certificates,functions,influxdb,config}
次に、対応するを作成します/nfs
2番目のホスト上のディレクトリ(上記と同じコマンドを使用する)では、“リーダー”ホストからNFS共有をマウントします.では、
docker-compose.yml
対応するNFSディレクトリを指定します.# - appwrite-uploads:/storage/uploads:rw
- /nfs/uploads:/storage/uploads:rw
# - appwrite-certificates:/storage/certificates:rw
- /nfs/certificates:/storage/certificates:rw
それから、私たちはdepends_on
and container_name
スタンザdocker-compose.yml
, 彼らはDocker群れによってサポートされていません.オーバレイネットワーク
ドッカー用途overlay networks 各ノードを一緒に群れに接続するために、コンテナはどこに配置されているかにかかわらず相互に通信できます.私たちは、Docker CLIとオーバーレイネットワークを作成することができますが、代わりに、この変更をキャプチャしましょう
docker-compose.yml
:networks:
gateway:
appwrite:
driver: overlay
準備ができている
一旦すべてが適当であるならば、我々は我々をセットしますAppwrite environment variables とスワームに展開します.
docker stack deploy -c <(docker-compose config) appwrite
If you see
docker-compose config
warnings, try upgrading the Compose version toversion: '3.8'
at the head ofdocker-compose.yml
to utilize the latest Compose specification.
私たちのマイクロサービスの労働者は、REDISを使用してパブ/サブを処理するので、スタックの自己治癒まで再起動することがあります.すべてが配備されると、サービスの状態を確認できます.
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ktfto6dap451 appwrite_appwrite replicated 1/1 appwrite/appwrite:0.8.0
hazw2csk4epd appwrite_appwrite-maintenance replicated 1/1 appwrite/appwrite:0.8.0
fshro0zn8iw6 appwrite_appwrite-schedule replicated 1/1 appwrite/appwrite:0.8.0
jep5n0gnmvy6 appwrite_appwrite-worker-audits replicated 1/1 appwrite/appwrite:0.8.0
oiftp636aq6v appwrite_appwrite-worker-certificates replicated 1/1 appwrite/appwrite:0.8.0
tlu7yxvtrr0r appwrite_appwrite-worker-deletes replicated 1/1 appwrite/appwrite:0.8.0
rda2kspenbzr appwrite_appwrite-worker-functions replicated 1/1 appwrite/appwrite:0.8.0
im800v9tct4n appwrite_appwrite-worker-mails replicated 1/1 appwrite/appwrite:0.8.0
ry0u3v726o8h appwrite_appwrite-worker-tasks replicated 1/1 appwrite/appwrite:0.8.0
734y2mr6gzkc appwrite_appwrite-worker-usage replicated 1/1 appwrite/appwrite:0.8.0
bkotuk5kwmxx appwrite_appwrite-worker-webhooks replicated 1/1 appwrite/appwrite:0.8.0
ff6iicbmf5my appwrite_influxdb replicated 1/1 appwrite/influxdb:1.0.0
892923vq96on appwrite_mariadb replicated 1/1 appwrite/mariadb:1.2.0
uw3l8bkoc3sl appwrite_redis replicated 1/1 redis:6.0-alpine3.12
ulp1cy06plnv appwrite_telegraf replicated 1/1 appwrite/telegraf:1.0.0
9aswnz3qq693 appwrite_traefik replicated 1/1 traefik:2.3 *:80->80/tcp, *:443->443/tcp
I've included my completed Compose file in a GitHub gist for reference.
構成
Dockerの群れには多くの設定オプションがあります.代わりに、配置を構成するときに最も有用なスタンダのいくつかについて話しましょう.
レプリカ
AppWriteはほとんど状態がないので、あなたのアプリケーションのニーズに応じて、各サービスを上下にスケールすることができます.たとえば、2つの関数を実行したい場合には、2回の関数実行を扱うことができます.
deploy:
replicas: 1
レプリカが特定のサービスのためのフィルタリングで展開されたことを確認できます.$ docker service ls --filter name=appwrite_appwrite-worker-functions
ID NAME MODE REPLICAS IMAGE PORTS
rda2kspenbzr appwrite_appwrite-worker-functions replicated 2/2 appwrite/appwrite:0.8.0
ノード制約
ドッカースウォームは、コンテナがどこに配置制約を使用して群れに展開制御することができます.例えば、我々はTraefikまたはMariADBを設定することができますだけでマネージャノードに次のように追加されます
docker-compose.yml
:deploy:
placement:
constraints: [node.role == manager]
次は何
私たちは氷山の先端をおおっていた.Dockerの群れでappwriteを実行する際にさらに読みましょう.
Docker secrets and Docker configs より簡単に制御し、群れを介して機密データを配布するために使用することができます.
クレジット
閉じるこの動画はお気に入りから削除されています.あなたは社会的なメディアのすべての私たちのポストに追いつくために従うことができます.完全なイベントスケジュールを見つけることができますhere
Reference
この問題について(チェッカー群積分), 我々は、より多くの情報をここで見つけました https://dev.to/appwrite/30daysofappwrite-docker-swarm-integration-2io9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol