1,准备工作
1,三台虚拟机
2,一个spring—boot项目jar包
2,安装nginx
1,在一台虚拟机上安装nginx
1.上传nginx安装包
2.解压nginx
tar -zxvf nginx-1.12.2.tar.gz -C /usr/local/src/
3.进入到nginx的源码目录
cd /usr/local/src/nginx-1.12.2/
4.预编译
./configure
5.安静gcc编译器
yum -y install gcc pcre-devel openssl openssl-devel
6.然后再执行
./configure
7.编译安装nginx
make && make install
8.启动nginx
sbin/nginx
9.查看nginx进程
ps -ef | grep nginx
netstat -anpt | grep nginx
将springboot程序部署在多台服务器上,然后启动springboot
java -jar niubike-0.0.1-SNAPSHOT.war >> ./logs 2>&1 &
修改nginx的配置文件,让nginx实现负载均衡功能
vi /usr/local/nginx/conf/nginx.conf
内容见nginx.conf
3,配置nginx.conf
先备份nginx.conf 防止修改出错导致配置文件损坏
#nginx进程 一般设置为cpu核数一样
worker_processes 1;
#错误日志存放目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程号PIDc存放的位置
#pid logs/nginx.pid;
#工作模式下连接数上限
events {
#epoll 多路复用IO 开启可以大大提高nginx性能但是 linux的内核必须是 2.6以上
use epoll;
# 单台worker process 进程的最大的并发连接数
worker_connections 1024;
}
################################## 一下的配置##################################
http {
#文件拓展名与类型的映射表
include mime.types;
#默认的文件类型
default_type application/octet-stream;
#设置日志模型
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#日志位置
#access_log logs/access.log main;
#开启高效的传输模型
sendfile on;
#激活 tcp 参数可以允许吧httpresponse hedaer 文件放到一个文件里面发布 积极的作用是减少网络的报文 段的数量
#tcp_nopush on;
#连接超时时间 单位是秒
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#上游服务器 意思就是配置负载均衡服务的设置 说白了(nginx 代理最后真是访问服务的地址和端口)
#负载均衡算法: 轮询 weight(权值) ip_hash fair(第三方) 比 weight 和 ip_hash 更加智能的负载均衡算法 fair 算法可以根据页面的大小加载时间长短进行智能的负载均衡
# 根据后端的服务器的响应时间.来自动分配请求,响应时间的短的优先发配置,这个算法nginx 首先是不支持.如果需要这个调度算法安装upstram_fair模块。
upstream backServer{
server 192.168.99.100:8080;
server 192.168.99.101:8080;
server 192.168.99.102:8080;
ipahash;
}
#基于域名的虚拟主机
server {
#监听端口
listen 80;
#监听服务的域名
server_name localhost;
#字符编码 UTF-8 gbk gb180.....
#charset koi8-r;
#access_log logs/host.access.log main;
#访问的匹配规则 正则表达式
location / {
#站点的根目录,也就是说是网站的存放目录
# root html;
proxy_pass http://backServer;
#逐次访问问的页面
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
配置完成后重新启动nginx
4,将spring—boot的jar包放到虚拟机上运行
访问 192.168.99.101/host
记得提前关闭虚拟机的防火墙
spring_boot代码
package com.etc.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.InetAddress;
@RestController
@SpringBootApplication
public class DemoApplication {
private static final Logger log = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
log.error("************ success ***************");
}
@GetMapping("host")
public String host() {
String host = null;
try {
host = InetAddress.getLocalHost().getHostName();
}catch (Exception e) {
e.printStackTrace();
}
return host;
}
}