跟上我的步伐
(安装docker 请查看安装docker编)
准备一台linux服务器
1、docker 创建nginx
docker pull nginx
2、配置两台容器,做服务用 形如图
1)mkdir -p /home/lxl/demo1
2) docker run -p 8001:8100 --name demo1 -v /home/lxl/demo1:/home/demo1 -i -t centos /bin/bash
这是8001是你的主机提供给外网的端口。8100是你容器服务器监听的端口
3) 这时我们在容器中,继续执行命令 yum -y list java* 查看可安装的java版本
4)yum install -y java-1.8.0-openjdk-devel.x86_64 安装JDK
5)CTRL+ D 返回主机
创建第二台同样的方式
1)mkdir -p /home/lxl/demo2
2) docker run -p 8002:8100 --name demo2 -v /home/lxl/demo2:/home/demo2 -i -t centos /bin/bash
3) 这时我们在容器中,继续执行命令 yum -y list java* 查看可安装的java版本
4)yum install -y java-1.8.0-openjdk-devel.x86_64 安装JDK
3、配置nginx.conf文件,必需要配置,nginx启动必备
mkdir -p /home/nginx/
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# include /etc/nginx/conf.d/*.conf;
upstream backServer{
server 172.17.0.10:8100;
server 172.17.0.11:8100;
}
server {
listen 80;
server_name localhost;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer/memberToWeiXin;
index index.html index.htm;
###nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 2s;
###nginx发送给上游服务器(真实访问的服务器)超时时间
proxy_send_timeout 2s;
### nginx接受上游服务器(真实访问的服务器)超时时间
proxy_read_timeout 2s;
}
}
}
upstream backServer 的两个IP是刚刚创建的两台内网IP
你的内网IP应该不一样,所以查看用以下方式
docker ps -a 查看你刚刚建两个容器ID
docker inspect 7d323169bbf7 (这里你的容器ID) 查看容器信息
proxy_pass http://backServer/memberToWeiXin; 这是转发到的地址
保存后启动nginx
4、docker run --name nginx -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/log:/var/log/nginx -v /home/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
5、上传你的服务到demo1和demo2 并启动(我用的是springBoot所以不需要tomcat容器)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<properties>
<start-class>com.test.AppTest</start-class>
</properties>
<dependencies>
<!-- 集成commons工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- 集成lombok 框架 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
</dependency>
<!-- SpringBoot-整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- 管理依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.M7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 打包后的名字 -->
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 配置jdk版本为1.8 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.8</target>
<source>1.8</source>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 工程主入口-->
<mainClass>${start-class}</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
<repositories>
<repository>
<id>mayikt</id>
<name>mayikt</name>
<url>http://163.53.168.26:8081/repository/maven-public</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>mayikt</id>
<name>mayikt</name>
<url>http://163.53.168.26:8081/repository/maven-public</url>
</pluginRepository>
</pluginRepositories>
</project>
6、效果
问题:高并发会存在以下问题
1、session共享
2、分布式job
3、分布式锁
4、分布式全局ID
5、分布式配置中心
6、分布式日志
7、跨域
8、分布式事务