Nginx四层负载均衡1
1、Nginx负载均衡Redis

| 服务器 | IP地址 | 作用 | 系统版本 |
|---|---|---|---|
| Nginx代理服务器 | 10.0.0.38 | 负载均衡服务器 | Rocky8.6 |
| Redis服务器1 | 10.0.0.18 | Redis服务器1 | Rocky8.6 |
| Redis服务器2 | 10.0.0.28 | Redis服务器2 | Rocky8.6 |
| client | 10.0.0.101 | 测试访问网站 | Ubuntu2004 |
# 安装redis服务器
# Rides1(10.0.0.18):
[root@redis1 ~]# yum install -y redis
[root@redis1 ~]# vim /etc/redis.conf #修改监听端口
bind 0.0.0.0
[root@redis1 ~]# systemctl restart redis
[root@redis1 ~]# ss -ntl # 查看6379端口是否开启
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:6379 0.0.0.0:*
==========================================
# Rides2(10.0.0.28):
[root@redis2 ~]# yum -y install redis
[root@redis2 ~]# vim /etc/redis.conf
bind 0.0.0.0
[root@redis2 ~]# systemctl restart redis
# Nginx服务器(10.0.0.38):
# 提前安装好Nginx,这里是编译安装到/apps/nginx里
[root@Nginx nginx]# vim /apps/nginx/conf/nginx.conf
include /apps/nginx/conf/tcp/*.conf; #不建议直接更改主配置,所以增加一个包含目录(注意:此处和http是并列级别)
[root@Nginx nginx]# vim /apps/nginx/conf/tcp/redis.conf
stream {
upstream redis_server{
server 10.0.0.18:6379 max_fails=3 fail_timeout=30s;
server 10.0.0.28:6379 max_fails=3 fail_timeout=30;
}
server {
listen 80;
proxy_pass redis_server;
proxy_connect_timeout 3s;
proxy_timeout 3s;
}
}
#客户端安装redis测试:
[root@ubuntu2004 ~]#redis-cli -h 10.0.0.38 set name b #增加一个name的变量,值是b
OK
[root@ubuntu2004 ~]#redis-cli -h 10.0.0.38 get name #查询name变量
"b"
[root@ubuntu2004 ~]#redis-cli -h 10.0.0.38 get name
(nil)
[root@ubuntu2004 ~]#redis-cli -h 10.0.0.38 get name
"b"
[root@ubuntu2004 ~]#redis-cli -h 10.0.0.38 get name
(nil)
## 可以看到负载到两台rides上了。
2、Nginx负载均衡MySQL

| 服务器 | IP地址 | 作用 | 系统版本 |
|---|---|---|---|
| Nginx代理服务器 | 10.0.0.38 | 负载均衡服务器 | Rocky8.6 |
| Mysql服务器1 | 10.0.0.18 | Mysql服务器1 | Rocky8.6 |
| Mysql服务器2 | 10.0.0.28 | Mysql服务器2 | Rocky8.6 |
| client | 10.0.0.101 | 测试访问网站 | Ubuntu2004 |
#mysql两台服务器做主主复制:(参见本人博客“Rocky之Mysql主从复制”第6节)
mysql> create user wang@'10.0.0.%' identified by '123456'; #增加一个测试用户
mysql> flush privileges;
========================================================
# Nginx(10.0.0.38):
[root@rocky8 nginx-1.22.0]#vim /apps/nginx/conf/tcp/redis.conf
stream {
upstream redis_server{
server 10.0.0.18:6379 max_fails=3 fail_timeout=30s;
server 10.0.0.28:6379 max_fails=3 fail_timeout=30;
}
upstream mysql_server {
server 10.0.0.18:3306 max_fails=3 fail_timeout=30s;
server 10.0.0.28:3306 max_fails=3 fail_timeout=30;
}
server {
listen 6379;
proxy_pass redis_server;
proxy_connect_timeout 3s;
proxy_timeout 3s;
}
server {
listen 3306;
proxy_pass mysql_server;
}
}
[root@rocky8 nginx-1.22.0]#nginx -s reload
====================================================
#客户端测试:
[root@rocky8 ~]# mysql -uwang -p123456 -h10.0.0.38 -e 'select @@server_id;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+
| @@server_id |
+-------------+
| 28 |
+-------------+
[root@rocky8 ~]# mysql -uwang -p123456 -h10.0.0.38 -e 'select @@server_id;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+
| @@server_id |
+-------------+
| 18 |
+-------------+
[root@rocky8 ~]# mysql -uwang -p123456 -h10.0.0.38 -e 'select @@server_id;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+
| @@server_id |
+-------------+
| 28 |
+-------------+
[root@rocky8 ~]# mysql -uwang -p123456 -h10.0.0.38 -e 'select @@server_id;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+
| @@server_id |
+-------------+
| 18 |
+-------------+
3、Rockey搭建LNMP(Nginx与php-fpm在同一服务器 )

| 服务器 | IP地址 | 作用 | 系统版本 |
|---|---|---|---|
| Nginx和PHP服务器 | 10.0.0.38 | Nginx+php-fpm服务器 | Rocky8.6 |
| Mysql服务器 | 10.0.0.18 | Mysql服务器 | Rocky8.6 |
| client | 10.0.0.101 | 测试访问网站 | Ubuntu2004 |
# nginx服务器(10.0.0.38):
[root@nginx ~]#yum install php-fpm php-mysqlnd php-json #安装php相关包已经依赖
[root@nginx ~]#vim /etc/php-fpm.d/www.conf #修改配置文件,最后结果如下:
[root@nginx ~]#egrep -v "^;|^$" /etc/php-fpm.d/www.conf
[www]
user = nginx # 最好改为nginx运行的用户
group = nginx # 最好改为nginx运行的组
listen = 127.0.0.1:9000 #监听地址及IP (跨网络需要写网卡的IP)
pm.status_path = /pm_status #取消注释
ping.path = /ping #取消注释
ping.response = pong #取消注释
slowlog = /var/log/php-fpm/www-slow.log #慢日志路径,不用修改
php_admin_value[error_log] = /var/log/php-fpm/www-error.log #错误日志路径,不用修改
php_value[session.save_handler] = redis #修改此行
php_value[session.save_path] = "tcp://redis-server:6379" #修改此行
[root@nginx ~]#systemctl restart php-fpm.service
[root@nginx ~]#ss -ntl #查看端口是否开启
LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
[root@nginx ~]#vim /apps/nginx/conf/nginx.conf
include /apps/nginx/conf/conf.d/*.conf; #在http内增加
[root@nginx ~]#mkdir /apps/nginx/conf/conf.d
[root@nginx ~]#vim /apps/nginx/conf/conf.d/php.conf
server {
listen 80;
server_name www.wang.org;
root /data/html; #静态页面访问/data/html
location ~ \.php$ {
root /data/php; #以php结尾的文件访问此目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #$document_root也可以写成上边root的目录:/data/php
include fastcgi_params;
}
}
[root@nginx ~]#mkdir -p /data/php
[root@nginx ~]#mkdir /data/html
[root@nginx ~]#vim /data/php/index.php
<?php
phpinfo();
?>
[root@nginx ~]#vim /data/html/index.html
www.wang.org
[root@nginx ~]#nginx -s reload
=========================================
# 客户端测试连接:


# Mysql(10.0.0.18):安装mysql并创建用户
mysql> create user wang@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';
mysql> flush privileges;
===================================================
# nginx服务器(10.0.0.38):
[root@nginx ~]#vim /data/php/mysql.php #测试连接数据库文件
<?php
$servername = "10.0.0.18";
$username = "wang";
$password = "123456";
// 创建连接
$conn = mysqli_connect($servername,$username, $password);
// 检测连接
if (!$conn) {
die("php连接MySQL数据库失败: " . mysqli_connect_error());
}
echo "php连接MySQL数据库成功!";
?>

# 修改配置页面测试ping和pm_status页面:(10.0.0.38):
[root@nginx ~]#vim /apps/nginx/conf/conf.d/php.conf
server {
listen 80;
server_name www.wang.org;
root /data/html;
location ~ \.php$|ping|pm_status { #增加ping和pm_status
root /data/php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@nginx ~]#nginx -s reload




Nginx四层负载均衡1的更多相关文章
- nginx四层负载均衡配置
nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 ...
- Nginx四层负载均衡概述
目录 Nginx四层负载均衡概述 什么是负载均衡 负载均衡应用场景 四层,七层集群架构 四层负载均衡总结 Nginx如何配置四层负载均衡 nginx四层负载均衡端口转发 Nginx四层负载均衡概述 什 ...
- 14、Nginx四层负载均衡
1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都 ...
- Nginx四层负载均衡
目录 Nginx四层负载均衡概述 Nginx如何配置四层负载均衡 使用nginx四层负载均衡实现tcp的转发 Nginx四层负载均衡概述 什么是四层负载均衡 四层负载均衡是基于传输层协议包来封装的(如 ...
- 安装Nginx四层负载均衡
Nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信. stream模块默认不安装的,需要手动添加参数:–with-stream,官方下载地址:downlo ...
- 14.Nginx四层负载均衡
1.七层负载均衡: 根据url 调度不同的集群 url.cheng.com 10.0.0.5 10.0.0.7 /pass 10.0.0.8 /user 1.web01和web02配置 (只不过代码不 ...
- Nginx 四层负载均衡
目录 四层负载均衡概述 配置七层负载均衡 配置四层负载均衡 四层负载均衡概述 四层负载均衡是基于IP+端口的负载均衡,七层负载均衡是基于URL或主机名等应用层信息的负载均衡. 其他层负载均衡(转载): ...
- linux+asp.net core+nginx四层负载均衡
Linux Disibutaion:Ubuntu 16.04.1 LTS Web Server:Nginx.Kestrel 关于如何在linux中部署asp.net core我这里不再详细介绍,可以参 ...
- 配置Nginx四层负载均衡
nginx 支持TCP转发和负载均衡的支持 实现下面的架构: 看配置: #user nobody; worker_processes 1; #error_log logs/error.log; #er ...
随机推荐
- CSS 标签、类名和ID选择器有空格和没有空格的区别
前言 标签选择器.类名选择器以及 ID 选择器在使用上要注意"加空格"和"不加空格".两种使用形式上有很大的差别. 下面是讲解案例的 HTML 代码: < ...
- CF-1675D. Vertical Paths
题意:每次可以选择一条路径,要求这条路径中每个点都是上一个点的子节点,求最少需要几条路径将所有点走完 思路:将每个点有没有子节点判断出来,因为只有没有子节点的点需要新增一条路,所以需要路径的最小数目就 ...
- 关于使用docker volume挂载的注意事项
Content 在用Docker进行持久化的存储的时候,有两种方式: 使用数据卷(volume) -v 容器绝对路径 或者 -v 已经创建的volume名称:容器绝对路径 2. 使用挂载点(共享宿主目 ...
- Linux之博客系统的搭建
博客系统 三种配置:php+nginx+mysql 搭建步骤 改主机名 hostnamectl set-hostname lnmp 传入LNMP压缩包于root下(略) 配置网络(略)及yum源 先检 ...
- 让Python更优雅更易读(第二集)
友情链接 让Python更优雅更易读(第一集) 1.装饰器 1.1装饰器特别适合用来实现以下功能 运行时校验:在执行阶段进行特定校验,当校验通不过时终止执行. 适合原因:装饰器可以方便地在函数执行前介 ...
- python 作用域与命名空间
作用域 作用域分为: 全局作用域 局部作用域 在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量 非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量 局部作用域可以使用全局 ...
- 依赖项安全检测新利器:Scorecard API
Scorecard 是 OpenSSF 旗下的开源项目,用于评估开源软件风险,本文由该项目的主要贡献者 Naveen 撰写. 现代软件是建立在数百个甚至数千个第三方开源组件之上的,这些通常被称为依赖项 ...
- 使用Elasticsearch Operator快速部署Elasticsearch集群
转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...
- Kubernetes 日志:日志收集架构
应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我们调试问题和监视集群情况也是非常有用的.而且大部分的应用都会有日志记录,对于传统的应用大部分都会写入到本地的日志文件之中.对于容器化应用 ...
- Elasticsearch的mapping讲解
映射是定义文档及其包含的字段的存储和索引方式的过程. 映射定义具有: 元字段 元字段用于自定义如何处理关联的文档元数据.包括文档 _index,_id和 _source领域. 字段或属性 映射包含pr ...