Redis クラスターをデプロイし、Docker でマイクロサービス プロジェクトをデプロイする詳細なプロセス

目次
  • 1. Docker デプロイメントを使用する利点
  • 2. Docker と Kubernetes の比較
  • 3、Redisクラスタ導入実戦
  • 4. Spring Boot プロジェクトのパッケージ化イメージ
  • ?まとめ

1. Docker デプロイメントを使用する利点

Docker の利点は、同じコンテナを異なるインスタンスで実行できることです。

Docker の 5 つの利点:  持续部署与测试多云服务平台支持环境标准化和版本控制隔离安全

2. Docker と Kubernetes の比較

Dockerは比較的小規模なアプリケーションに適しており、同時実行量が多くない場合、マイクロサービスが 10 個を超える場合は、リソースの節約と開発コストの削減にもつながるDocker デプロイメントを適用することをお勧めします

K8S は、高い同時実行性と 10 を超えるマイクロサービスを備えた大規模クラスターに適していますが、同時にパフォーマンスも非常に優れており、パフォーマンスを前提とすると開発コストも大幅に増加します

3、Redisクラスタ導入実戦

次の例では、図に示すように 3 つのマスターと 3 つのスレーブを持つ Redis クラスターをデプロイします。

すべてのコンテナを停止し、すべてのレコードを削除します

?

1

docker rm $(docker ps -a -q)

カスタムネットワーク Redis を作成する

?

1

docker network create redis --subnet 172.38.0.0/16

スクリプトを使用して 6 つの Redis 基本情報を作成する

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

for port in $(seq 1 6); \

do \

mkdir -p /mydata/redis/node-${port}/conf

touch /mydata/redis/node-${port}/conf/redis.conf

cat << EOF >/mydata/redis/node-${port}/conf/redis.conf

port 6379

bind 0.0.0.0

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

cluster-announce-ip 172.38.0.1${port}

cluster-announce-port 6379

cluster-announce-bus-port 16379

appendonly yes

EOF

done

6 つの Redis コンテナを起動してデータをマウントする

?

1

2

3

4

5

6

7

8

# 通过脚本一次性启动

for port in $(seq 1 6); \

do

docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \

-v /mydata/redis/node-${port}/data:/data \

-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \

-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \

done

redis-1 に設定を入力してクラスターを作成します

?

1

2

3

4

5

# 进入redis-1

docker exec -it redis-1 /bin/sh

# 创建集群

redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13

:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

コンテナに

?

1

2

3

4

redis-cli -c

# 查看详细信息

CLUSTER INFO

ビューノード

?

1

CLUSTER NODES

設定

?

1

set k1 v1

値がノード 13 に設定されていることがわかります。ノードを停止し、値を再度取得して表示します。

?

1

2

# 新开窗口停止redis-3容器

docker stop redis -3

元のウィンドウで k1 を取得します

?

1

2

# 需要重新进入再次获取

get k1

値が他のノードに同期されていることがわかり、マスター ノードがハングアップした後も値を取得できます。

4. Spring Boot プロジェクトのパッケージ化イメージ

SpringBootプロジェクトを作成する

テストコントローラー

?

1

2

3

4

5

6

7

8

@RestController

public class TestController {

    @GetMapping("/hello")

    public String hello() {

        return "Hello World!!!";

    }

}

ローカル テストに正常にアクセスされ、プロジェクトが jar パッケージとしてコンパイルされます。

?

1

2

// 进入项目目录

mvn clean package

Docker イメージをダウンロードする

Dockerfile の書き込み

?

1

2

3

4

5

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

jar パッケージと Dockerfile をサーバーにアップロードします

サーバーファイル

Dockerfileをコンパイルする

?

1

docker build -t xiaowang .

テストアクセス

?

1

curl localhost:49153

画像が無事アップロードされました!

?まとめ

上記は [ Bug Terminator ] Docker の実戦への  簡単な紹介です - Redis クラスターのデプロイとマイクロサービス プロジェクトのデプロイDocker を使用してアプリケーションをデプロイするのは非常に便利で高速ですが、アーキテクチャが巨大な場合、Docker の使用は推奨されません。現在最も人気のあるテクノロジーである k8s クラスター デプロイメントを使用できます。

おすすめ

転載: blog.csdn.net/qq_15509251/article/details/131608108