一、nginx 七层负载均衡
1、七层负载均衡基础配置
2、负载均衡状态
[root@server]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
event {
worker_connections 1024;
}
http { # 七层负载均衡支持http、ftp协议
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream qicengzu { # 服务器组,组名qingcengzu
server 192.168.33.11:8080; # 组内服务器1
server 192.168.33.22:8080; # 组内服务器2
}
server { # 虚拟服务器
listen 80; # 虚拟服务器端口
server_name localhost; # 虚拟服务器名
location { # 虚拟服务器的url跳转
proxy_pass http://qicengzu;# 当访问本机的80端口时,跳转到服务器组
}
}
}
3、负载均衡策略
(1)轮询
upstream backend {
server 192.168.33.11:8080;
server 192.168.33.22:8080;
}
(2)weight加权
upstream backend {
server 192.168.33.11:8080 weight=5;
server 192.168.33.22:8080 weight=2; # 权重默认为1,谁权重大,谁优先处理请求
}
(3)ip_hash
1)当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。
2)这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能保证其访问的还是后端web服务器A。
3)注意: 使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置后端服务器权重等方法将不起作用。
upstream backend {
ip_hash; # ip_hash算法
server 192.168.33.11:8080;
server 192.168.33.22:8080;
}
(4)least_conn
least_conn:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均地转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,leastconn这种方式就可以达到更好的负载均衡效果。
upstream backend {
least_conn; # 将请求转发给连接数较少的后端服务器
server 192.168.33.11:8080;
server 192.168.33.22:8080;
}
(5)url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用ur_hash,可以使得同一个url (也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从缓存中读取。
upstream backend {
hash $request_uri;
server 192.168.33.11:8080;
server 192.168.33.22:8080;
}
二、nginx四层负载均衡
1、四层使用 stream 模块,与七层的 http 模块同级。
[root@localhost ~]# nginx -V
nginx version: nginx/1.22.1
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)
built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx--with-httpssl module --withhttp_stub status_module --with-http_realip module
[root@localhost ~]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxbak #将原有/usr/local/nginx/sbin/nginx进行备份
[root@localhost ~]# cd /usr/src/nginx-1.22.1/
[root@localhost nginx-1.22.1]# Is
auto CHANGES CHANGES.ru configure html Makefile objs
conf contrib LICENSE man README src
[root@localhost nginx-1.22.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --withhttp_ssl_module --with-http_stub_status_module --withhttp_realip_module --with-stream # 安装指定模块
[root@localhost nginx-1.22.1]# make # 进行编译
[root@localhost nginx-1.22.1]# cp ./objs/nginx /usr/local/nginx/sbin/ # 将obis下面的nginx移动到/usr/local/nginx/sbin下
[root@localhost nginx-1.22.1]# nginx -V # 模块添加成功
nginx version: nginx/1.22.1
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)
built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx--with-httpssl module --withhttp_stub status_module --with-http_realip module --withstream
[root@server ~]# vim /usr/local/nginx/conf/nginx.conf
events {
worker_connections 1024;
}
stream {
upstream dongtai { # 配置dongtai服务器组
server 192.168.33.11:8080; # 动态资源走tomcat的8080端口
server 192.168.33.22:8080;
}
server {
listen 81; # 设置监听端口
proxy_pass dongtai; #当请求访问到本机的81端口时,将请求转发到dongtai组
}
upstream jingtai { # 配置jingtai服务器组
server 192.168.33.33:80; # 静态资源走nginx或tomcat的80端口
server 192.168.33.44:80;
}
server {
listen 82;
proxy_pass jingtai;
}
}
三、java环境的配置
1、下载jdk22
wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.tar.gz
2、解压
tar -zxvf jdk-22.2.tar.gz
3、移动到usr目录
mv jdk-22.2/ /usr/local/jdk22/
4、修改配置文件
vim /etc/profire
……
export JAVA_HOME=/usr/local/jdk22/
export PATH=$JAVA_HOME/bin:$PATH
5、运行profile
source /etc/profile
6、测试
java
java -version
四、tomcat的配置
1、tomcat启动服务
/usr/local/tomcat/bin/startup.sh //启动
netstat -lnput|grep java //端口状态
8080
8005
/usr/local/tomcat/bin/shutdown.sh //停用
2、tomcat的目录
(1)bin
1)可执行文件
A.在window和linux通用
B. win10上优化之后上传到linx,只需要添加权限就可以了
C. win对应的文件的扩展名为bat(批处理文件)
D. linux对应的文件的扩展名为sh
F. startupsh
E. Shutdown.sh
(2)webapps
1)每个目录就是一个项目
2)ROOT是默认的项目目录,在实际开发中,我们可以将程序打包成ROOT.war或者将目录名称修改为ROOT就可以直接发布。
3)使用10.1.1.20:8080直接访问的页面是ROOT目录下的index.jsp
4)在这个目录下可以部署一些静态资源,可以使用浏览器查看,也可以使用下载
5)用可以在该目录下创建新的文件夹作为项目发布
6)要发布项目有两个选项
A. 将项目移动该目录下
B. 在conf/server.xml修改资源文件的位置
C. nginx 默认的路径/usr/local/nginx/html,也可以在server中配置其他的绝对路径,不必须是在内部的html目录中
(3)work
1)将jsp还原成java和class文件
2)保存的路径
/usr/local/tomcat/work/Catalina/localhost/myweb/org/apache/jsp/xxx.java
3)自动将jsp解析为javav文件,不需要重启服务器
(4)logs
1)日志文档
2)catalina.log
3)localhost.log
4)都有相应日期
(5)conf
[root@dynamic001 conf]# ls -l
总用量 232
drwxr-x--- 3 root root 23 8月 1 14:11 Catalina
-rw------- 1 root root 12926 7月 8 05:02
catalina.policy
-rw------- 1 root root 7693 7月 8 05:02
catalina.properties
-rw------- 1 root root 1411 7月 8 05:02 context.xml
-rw------- 1 root root 1149 7月 8 05:02 jaspic
providers.xml
-rw------- 1 root root 2313 7月 8 05:02 jaspic
providers.xsd
-rw------- 1 root root 4144 7月 8 05:02
logging.properties
####################################################333
-rw------- 1 root root 7126 7月 8 05:02 server.xml
######################################################
-rw------- 1 root root 2756 7月 8 05:02 tomcat
users.xml
-rw------- 1 root root 2558 7月 8 05:02 tomcat
users.xsd#####################################################
-rw------- 1 root root 172780 7月 8 05:02 web.xml
######################################################33
(6)lib
(1)tomcat运行为项目提供的依赖文件
(2)要访问没有数据,访问数据库的包
五、数据库
1、关系型数据库
(1)oracle
(2)mysql
1)安装和配置
2)sql语句
3)优化
4)备份与安全
5)集群
A.主从
B. 一主多从
C. 增删改主机
D. 从服务负责mysql查询
(3)sql-server
2、非关系型数据库
(1)redis
(2)cached
(3)mongodb