Nginx学习笔记---集群部署 - Go语言中文社区

Nginx学习笔记---集群部署


Http功能模块指定(nginx.conf配置):

        alias file-path|directory-path   将所有的访问路径统一改为指定的路径名称

        keepalive_timeout 75:客户端与服务器连接的超时时间

        resover_timeout 5s:解析文件的超时时间(默认30s,配置里没有可以加)

        服务监听的端口和域名(可以多个  使用空格隔开)

location: /处理所有请求

负载均衡:此模块为后端的服务器提供简单的负载均衡(轮询和连接ip)

upstream:负载均衡池  weight:权重  默认为1  fail_timeout:连接超时时间  max_fails:多少次失败服务挂掉

 allow:允许访问的地址   deny:拒绝访问的地址

Nginx服务开启但是无法访问nginx页面:

原因:centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:

firewall-cmd --state    #查看防火墙的运行状态

如果你想启用iptables的话,得先安装该服务:yum install iptables-services

检查指定端口是否处于监听状态:netstat -lnt |grep 80   

getenforce :查看iptables状态,是否为关闭,以下为关闭状 Disabled

iptables -L:查看防火墙的运行状态 可以看到有很多规则在运行,说明这个时候iptables是运行状态

service iptables status:查看iptables的状态   service firewalld status:查看firewalld的状态

---------------------------------------firewalld防火墙----------------------------------

systemctl status firewalld:查看firewall服务状态

firewall-cmd --state:查看firewall的状态

service firewalld start:开启防火墙

service firewalld restart:重启防火墙

service firewalld stop:关闭防火墙

firewall-cmd --query-port=8080/tcp:查询端口是否开放

firewall-cmd --permanent --add-port=80/tcp:开放80端口

firewall-cmd --permanent --remove-port=8080/tcp  移除端口

firewall-cmd --reload:重启防火墙(修改配置后需重启)

---------------------------------------iptables防火墙----------------------------------

service iptables status:查看防火墙状态

service iptables stop :停止防火墙

service iptables start  :启动防火墙

service iptables restart :重启防火墙

chkconfig iptables off :永久关闭防火墙

service iptables restart:修改配置后重启防火墙

------------------利用nginx + tomcat建立集群--------------------------------------

我们这里首先建立三台tomcat端口分别是8081、8082、8083,当有请求过来,其中一台tomcat挂了不影响使用,实现高可用。

但是期间出了些问题:启动tomcat失败(tail -f catalina.out 一直处于阻塞状态)

1、通过./catalina.sh run  输入catalina.sh 下面附属很多后缀命令往下拼即可

2、查看netstat -apt 目前端口及对应pid的占用情况

3、catalina.sh stop 停止tomcat服务  catalina.sh start 开启tomcat服务(类似以我们到bin目录下执行startup.sh)

我catalina.sh start 发信tomcat一直处于阻塞状态???

于是我把该进程杀死,在重新看了一下端口都是ok的

我再次启动tomcat,查看catalina.out日志,ok,就是他妈久了点

为什么会花这么长时间?通过日志发现此次耗时284s,时间主要花在实例化 SecureRandom 对象上了。

Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID,这里花去了243秒,也即接近4分钟。

SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。

在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。

1)如果Java.security.egd 属性或securerandom.source属性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM 会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用 SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。

2)如果java.security.egd属性或securerandom.source属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)方法进行初始化。

这就是为什么我们设置值为”file:///dev/urandom”或者值为”file:/./dev/random”都会起作用的原因。

在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random设备会只返回熵池中噪声的随机字节。/dev/random非 常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。

当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。

那么什么是环境噪声?

随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。

解决

有两种解决办法:

1)在Tomcat环境中解决

可以通过配置JRE使用非阻塞的Entropy Source。

在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。

加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。

2)在JVM环境中解决

打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:

securerandom.source=file:/dev/urandom

替换成

现在快多了,既然我们tomcat已经能够正常启动后,就要在服务器下安装三台不同端口的tomcat了。操作如下:

1、分别在将安装好的tomcat复制三分到你定义的目录,并重新命名为tomcat8081、tomcat8082、tomcat8083

2、分别改动端口号(都加上自己的端口号以8081为例)

将8005改为8015

将8080改为8081

将8009改为8019 

修改完成,修改相关配置(etc/profile)环境变量,使用visul模式复制粘贴y复制 p粘贴完成环境变量的配置

3、环境变量配置还需将catalina_home2等全局元素引入到catalina.sh 中,每个tomcat中添加对应的参数如下:

4、配置完环境变量后,将准备好的3个tomcat删除webapps下面的所有文件夹并创建一个ROOT文件夹,在将自定义的一个jsp或者html准备好

在重新加载配置,进入sbin目录下./nginx -s reload;就此完成,浏览器输入对应ip转发到对应三个tomcat。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_40826106/article/details/84640791
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:22:18
  • 阅读 ( 1266 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢