高可用笔记(1) nginx

简介: Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。官网是[nginx.org](http://nginx.org)。 Nginx是本次HA方案

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。官网是nginx.org

Nginx是本次HA方案中使用频率最高的,非常好用。感谢战斗民族!

测试环境

  1. host1 192.168.30.1 (本文都在host1下进行)
  2. host2 192.168.30.2
  3. host3 192.168.30.3

CentOS7 下yum安装Nginx

  • 添加nginx的yum源文件

CentOS7的默认yum源中没有Nginx,所以要新增一个nginx源。
在/etc/yum.repos.d下添加文件nginx.repo:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
  • yum安装nginx
$ yum install nginx -y
  • 关闭selinux
$ setenforce 0
  • 启动nginx
$ systemctl enable nginx
$ systemctl start nginx

用浏览器打开 http://192.168.30.1/出现如下欢迎界面,安装完成!
screenshot

http反向代理

  • 部署tomcat项目helloproject

在/var/lib/tomcat/webapps/下创建目录helloproject:

$ mkdir helloproject
$ cd helloproject
$ touch index.html

index.html:

<html>
        <head></head>
        <body>
                <h2>Hello nginx !</h2>
                <h2>I'm host1.</h2>
        </body>
</html>

重启tomcat

$ systemctl restart tomcat

用浏览器打开http://192.168.30.1:8080/hellonginx出现如下界面
screenshot

  • 增加nginx配置文件

在/etc/nginx/conf.d/中增加配置文件
http_proxy.conf:

server {
    listen       80;
    server_name  localhost;


    location /hellonginx{
        proxy_pass http://localhost:8080/hellonginx;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $http_host;

    }
}
$ nginx -s reload

用浏览器打开http://192.168.30.1/hellonginx,出现如下界面,http反向代理成功。
screenshot

tcp反向代理

  • 源码安装nginx

从nginx-v1.9.0开始,nginx增加了ngx_stream_core_module模块,开始提供对tcp/udp的反向代理功能。
But, 编译时需要带--with-stream参数,yum安装的nginx默认是没有这个功能。So, 我们只能重新通过源码安装了。

开始安装:

# 关闭yum安装的nginx
$ systemctl stop nginx
# 卸载yum安装的nginx
$ yum remove nginx  
# 下载nginx最新稳定版源码包
$ wget http://nginx.org/download/nginx-1.10.2.tar.gz
# 解压缩
$ tar xvf nginx-1.10.2.tar.gz
$ cd nginx-1.10.2
$ ./configure --with-stream
$ make
$ make install

安装完后nginx的主目录在/usr/local/nginx,我们需要改一下环境变量来使nginx命令生效,这里就不叙述怎么改环境变量。

  • 修改nginx.conf

在上文中可以看到,yum安装的nginx有一个配置文件目录/etc/nginx/conf.d,当我们增加一个代理的时候只要在这个目录中增加一个配置文件即可,而不必修改nginx.conf文件。
显然,源码安装的nginx没有,那么只要稍改一下nginx.conf就可以达到这个效果。
修改/usr/local/nginx/conf/nginx.conf如下:

……
http {
    ……
    include /etc/nginx/conf.d/*.conf;
    ……
}

另外,再增加tcp的配置目录:

$ mkdir /etc/nginx/conf_stream.d/

/usr/local/nginx/conf/nginx.conf增加配置如下:

……
stream {
    include /etc/nginx/conf_stream.d/*.conf;
}
  • 配置tcp反向代理

在/etc/nginx/conf_stream.d/中增加配置文件tcp_proxy.conf:


server {
    listen       0.0.0.0:22222;
    proxy_pass 192.168.30.1:22;
}
$ nginx -s reload

在host2下测试ssh通过22222端口连接:

$ ssh -p 22222 root@192.168.30.1

ssh连接成功,tcp反向代理完成。

目录
相关文章
|
2月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
74 0
|
20天前
|
JavaScript Java 应用服务中间件
|
4月前
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
2月前
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
48 1
|
3月前
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
|
3月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
88 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
|
4月前
|
缓存 负载均衡 应用服务中间件
技术笔记:Nginx配置详解
技术笔记:Nginx配置详解
26 0
|
4月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
5月前
|
监控 负载均衡 应用服务中间件
Keepalive 解决nginx 的高可用问题
Keepalive 解决nginx 的高可用问题
|
负载均衡 容灾 应用服务中间件
使用Docker-compose搭建nginx-keepalived双机热备来实现高可用nginx集群
最近同学出去面试经常会被问到一个问题。 面试官:你说你们公司使用nginx反向代理tornado,部署了多少多少台机器,好像很牛逼的样子,但是我问你,如果主机也就是部署了nginx那台机器并发过大导致宕机了怎么办? 答曰:不考虑带宽峰值的话,比较新的 CPU 跑 nginx 单核每秒能接近 2 万请求,而且nginx如果纯做 HTTP 转发的话,Nginx 的性能高到恐怖,会挂掉很不科学。。。。 面试官:好吧,算你会忽悠,那如果插头被扫地大妈踢掉了怎么办,因为没电导致服务器宕机 答曰:阿里云机房会断电。。。你特么在逗我吧。。
使用Docker-compose搭建nginx-keepalived双机热备来实现高可用nginx集群
下一篇
无影云桌面