Nginx のストリーム モジュールを使用して MySQL リバース プロキシと RabbitMQ ロード バランシングを実装する

なぜストリームモジュールを使用するのでしょうか?

  • TCP レベルのプロキシ: MySQL と RabbitMQ はどちらも HTTP ではなく TCP ベースのプロトコルです。streamこのモジュールにより、Nginx が TCP レベルでプロキシできるようになり、非 HTTP トラフィックを処理できるようになります。
  • プロトコルの透明性:モジュールを使用するとstream、Nginx は MySQL または AMQP プロトコルを解析しません。つまり、プロトコルの整合性を維持しながら、データをシームレスに受け渡すことができます。
  • パフォーマンスと高可用性:streamモジュールは複数のバックエンド サーバーに接続を分散することで負荷分散を可能にし、パフォーマンスと高可用性を向上させます。
  • 柔軟性:モジュールを使用するとstream、ほぼすべての TCP または UDP ベースのサービスをプロキシできるため、Nginx は強力なネットワーク プロキシ ツールになります。

nginxにストリームモジュールを導入するにはどうすればよいですか?

./configure 中にモジュールを追加します--with-stream

./configure --prefix=/usr/local/nginx --with-stream

nginx 構成ファイルに MySQL リバース プロキシを実装する

以下はリバース プロキシの実装です、3306 から 10002

stream {

    server {
        listen 10002;
        proxy_connect_timeout 5s;
        proxy_timeout 300s;
        proxy_pass 127.0.0.1:3306;
    }
}
http { # ...其他HTTP配置... }

nginx 設定ファイルでの RabbitMQ ロード バランシングの実装

stream {
	upstream rabbitmq_nodes {
	server 127.0.0.1:5672 max_fails=3 fail_timeout=30s;   # 第一个节点
	server 127.0.0.1:5673 max_fails=3 fail_timeout=30s;   # 第二个节点
	server 127.0.0.1:5674 max_fails=3 fail_timeout=30s;   # 第三个节点

# 健康检查
	}

	server {
		listen 5675;
		proxy_pass rabbitmq_nodes;
	}
}

おすすめ

転載: blog.csdn.net/Mrxiao_bo/article/details/132837051
おすすめ