跟上我的步伐
(安裝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、分佈式事務