如何使用nginx充当mysql的负载均衡器

Dior ·
更新时间:2024-09-20
· 681 次阅读

说明:nginx版本要求是1.9以上 ,编译nginx的时候需要加上 --with-stream

如:

./configure --prefix=/Data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-stream

注意

1.因为mysql默认使用了3306端口所以配置nginx tcp反向代理mysql的时候注意端口不要与mysql监听的端口一样比如我使用的是3307

2.确保能root用户能远程连接mysql

如数据库mysql 表user

nginx.conf

此段代码追加在nginx.conf文件末尾,注意不能加在http{}内

stream{ include /Data/apps/nginx/conf/stream/*.conf; }

stream/db.conf

server { listen 3307; #注意端口不能跟mysql监听的一样 proxy_pass db; } upstream db { server 127.0.0.1:3306; server 192.168.233.1:3306; }

重启nginx, 查看nginx是否监听了3307端口

然后php代码是这样子

#其实就是new mysqli的时候只需改端口号与nginx反向代理设置的端口号一样就可以了 $mysqli = new mysqli('127.0.0.1','root','root','test',3307);

完整的php代码

<?php class MysqlClass { private static $obj = NULL; //mysqlclass对象 public $host; public $database; public $user; public $pwd; public $port; public $mysqli = NULL; //禁止对象被克隆 private function __clone(){} //禁止外部实例化 private function __construct($host="127.0.0.1",$database="test",$user="root",$pwd="root",$port="3307") { $this->host = $host; $this->database = $database; $this->user = $user; $this->pwd = $pwd; $this->port = $port; $this->mysqli = $this->db_connect(); } //获取mysqli连接 private function db_connect() { $mysqli = new mysqli($this->host,$this->user,$this->pwd,$this->database,$this->port); if($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_errno); exit(); } $mysqli->query("set names utf8 "); return $mysqli; } //获取db实例 public static function get_db() { if(self::$obj === NULL) { self::$obj = new self(); } return self::$obj; } public function db_query($sql) { $result = $this->mysqli->query($sql); $arr = []; while ($row = $result->fetch_assoc()) { $arr[] = $row; } $result->close(); $this->mysqli->close(); return $arr; } public function db_insert() { } public function db_update() { } public function __destruct() { $this->mysqli->close(); } } $db = MysqlClass::get_db(); $r = $db->db_query("show tables"); var_dump($r);

结果

您可能感兴趣的文章:深入浅析nginx四种调度算法和进阶Nginx 负载均衡算法及故障转移解析为Nginx启用Brotli压缩算法的方法示例Nginx启用Brotli算法压缩的示例springboot+nginx+https+linux实现负载均衡加域名访问简单测试使用Docker Compose 实现nginx负载均衡的方法步骤详解Nginx服务器之负载均衡策略(6种)简单了解Nginx七层负载均衡的几种调度算法



负载均衡器 均衡器 负载均衡 Nginx Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号