常用 Docker 容器快速部署。
Docker 部署 FastDFS。
拉取镜像。
sudo docker pull delron/fastdfs:latest
创建 Docker 容器。
sudo docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
创建 Storage 容器。
sudo docker run -d --network=host --name storage -e TRACKER_SERVER=192.168.33.128:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
进入 storage 容器,到 storage 的配置文件中配置 HTTP 访问的端口。配置文件在 /etc/fdfs/storage.conf。
[geek@192 ~]$ sudo docker exec -it storage /bin/bash
[root@192 nginx-1.12.2]# cd /etc/fdfs/
[root@192 fdfs]# ll
total 88
-rw-rw-r–. 1 root root 1451 Sep 24 02:08 client.conf
-rw-r–r–. 1 root root 1461 Apr 29 2018 client.conf.sample
-rw-r–r–. 1 root root 955 Apr 29 2018 http.conf
-rw-r–r–. 1 root root 31172 Apr 29 2018 mime.types
-rw-r–r–. 1 root root 3679 Sep 24 02:08 mod_fastdfs.conf
-rw-rw-r–. 1 root root 7893 Sep 24 02:08 storage.conf
-rw-r–r–. 1 root root 7927 Apr 29 2018 storage.conf.sample
-rw-rw-r–. 1 root root 105 Apr 29 2018 storage_ids.conf
-rw-r–r–. 1 root root 105 Apr 29 2018 storage_ids.conf.sample
-rw-rw-r–. 1 root root 7307 Apr 29 2018 tracker.conf
-rw-r–r–. 1 root root 7389 Apr 29 2018 tracker.conf.sample
[root@192 fdfs]# vi storage.conf
默认的 http 端口为 8888。
// # the port of the web server on this storage server
http.server_port=8888
配置 NGINX。/usr/local/nginx/conf/nginx.conf。
[root@192 fdfs]# cat /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
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_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
默认存储路径。/var/fdfs/data。
[root@192 fdfs]# ls /var/fdfs/data/
00 07 0E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70 77 7E 85 8C 93 9A A1 A8 AF B6 BD C4 CB D2 D9 E0 E7 EE F5 FC
01 08 0F 16 1D 24 2B 32 39 40 47 4E 55 5C 63 6A 71 78 7F 86 8D 94 9B A2 A9 B0 B7 BE C5 CC D3 DA E1 E8 EF F6 FD
02 09 10 17 1E 25 2C 33 3A 41 48 4F 56 5D 64 6B 72 79 80 87 8E 95 9C A3 AA B1 B8 BF C6 CD D4 DB E2 E9 F0 F7 FE
03 0A 11 18 1F 26 2D 34 3B 42 49 50 57 5E 65 6C 73 7A 81 88 8F 96 9D A4 AB B2 B9 C0 C7 CE D5 DC E3 EA F1 F8 FF
04 0B 12 19 20 27 2E 35 3C 43 4A 51 58 5F 66 6D 74 7B 82 89 90 97 9E A5 AC B3 BA C1 C8 CF D6 DD E4 EB F2 F9 fdfs_storaged.pid
05 0C 13 1A 21 28 2F 36 3D 44 4B 52 59 60 67 6E 75 7C 83 8A 91 98 9F A6 AD B4 BB C2 C9 D0 D7 DE E5 EC F3 FA storage_stat.dat
06 0D 14 1B 22 29 30 37 3E 45 4C 53 5A 61 68 6F 76 7D 84 8B 92 99 A0 A7 AE B5 BC C3 CA D1 D8 DF E6 ED F4 FB sync
- 测试代码。
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.7</version>
</dependency>
# ~ ~ ~ ~ ~ ~ ~
# 分布式文件系统 FDFS 配置。
# ~ ~ ~ ~ ~ ~ ~
fdfs.so-timeout=1501
fdfs.connect-timeout=601
# 缩略图生成参数。
fdfs.thumb-image.width=150
fdfs.thumb-image.height=150
# TrackerList 参数。支持多个。
fdfs.tracker-list=192.168.33.128:22122
fdfs.web-server-url=http://192.168.33.128:8888/
package com.tanhua.server;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.File;
import java.io.IOException;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestFastDFS {
@Autowired
protected FastFileStorageClient fastFileStorageClient;
@Test
public void testUpload() {
String path = "C:\\Users\\geek\\Desktop\\png.。\\无标题·.png";
File file = new File(path);
try {
StorePath storePath = this.fastFileStorageClient.uploadFile(FileUtils.openInputStream(file), file.length(), "jpg", null);
System.out.println(storePath);// StorePath [group=group1, path=M00/00/00/wKghgF9sBBSAbsyvAELG45c6F4o645.jpg]
System.out.println(storePath.getFullPath());// group1/M00/00/00/wKghgF9sBBSAbsyvAELG45c6F4o645.jpg
} catch (IOException e) {
e.printStackTrace();
}
}
}
http://192.168.33.128:8888/group1/M00/00/00/wKghgF9sBBSAbsyvAELG45c6F4o645.jpg
Docker 部署 MongoDB。
拉取镜像。
sudo docker pull mongo
创建容器。
sudo docker create --name mongodb --restart=always -p 27017:27017 -v mongodb:/data/db mongo:4.0.3
启动容器。
sudo docker start mongodb
进入容器。
sudo docker exec -it mongodb /bin/bash
使用 MongoDB 客户端进行操作。
mongo
>
show dbs # 查询所有数据库。
admin 0.000GB
config 0.000GB
local 0.000GB
root@593435b420e5:/# mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("d888a81c-50c0-4664-a100-c33b9b66a3cd") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2020-09-23T15:30:41.649+0000 I CONTROL [initandlisten]
2020-09-23T15:30:41.649+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-09-23T15:30:41.649+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2020-09-23T15:30:41.649+0000 I CONTROL [initandlisten]
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten]
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten]
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-09-23T15:30:41.650+0000 I CONTROL [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
Docker 部署 RocketMQ。
拉取镜像。
sudo docker pull foxoiswho/rocketmq:server-4.3.2
sudo docker pull foxoiswho/rocketmq:broker-4.3.2
创建 nameserver 容器。
sudo docker create -p 9876:9876 --name rmqserver
-e “JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m”
-e “JAVA_OPTS=-Duser.home=/opt”
-v rmqserver-logs:/opt/logs
-v rmqserver-store:/opt/store
foxiswho/rocketmq:server-4.3.2
创建 broker.conf 文件。
sudo vim /home/geek/geek/conf/broker.conf
brokerIP1=192.168.33.128
namesrvAddr=192.168.33.128:9876
brokerName=broker_tanhua
创建 broker 容器。
sudo docker create -p 10911:10911 -p 10909:10909 --name rmqbroker
-e “JAVA_OPTS=-Duser.home=/opt”
-e “JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m”
-v /home/geek/geek/conf/broker.conf:/etc/rocketmq/broker.conf
-v rmqbroker-logs:/opt/logs
-v rmqbroker-store:/opt/store
foxiswho/rocketmq:broker-4.3.2
启动容器。
sudo docker start rmqserver rmqbroker
部署 RocketMQ 管理工具。
sudo docker pull styletang/rocketmq-console-ng:1.0.0
创建并启动容器。
sudo docker run -e “JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.33.128:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false” -p 8082:8080 -t styletang/rocketmq-console-ng:1.0.0
Docker 搭建 Redis 集群。
sudo docker create --name redis-node01 --net host -v redis-node01:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf --port 6379
sudo docker create --name redis-node02 --net host -v redis-node02:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf --port 6380
sudo docker create --name redis-node03 --net host -v redis-node03:/data redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-03.conf --port 6381
- 启动容器。
sudo docker start redis-node01 redis-node02 redis-node03
- 进入 redis-node01 容器进行操作。
sudo docker exec -it redis-node01 /bin/bash
- 组建集群。
redis-cli --cluster create 192.168.33.128:6379 192.168.33.128:6380 192.168.33.128:6381 --cluster-replicas 0
- 查询集群信息。
127.0.0.1:6379> CLUSTER NODES
ee90f598b5530092fdcecb6ab7f449963a737011 192.168.33.128:6379@16379 myself,master - 0 1600841410000 1 connected 0-5460
a73be77bc0b5eceadd7db98b6f876ec8f0707c32 192.168.33.128:6380@16380 master - 0 1600841411105 2 connected 5461-10922
ec17a99a91a86b464b2f484094ed1f24d78eb559 192.168.33.128:6381@16381 master - 0 1600841412120 3 connected 10923-16383
127.0.0.1:6379> set name geek
(error) MOVED 5798 192.168.33.128:6380
127.0.0.1:6379>
root@192:/data# redis-cli -c
127.0.0.1:6379> set name geek
-> Redirected to slot [5798] located at 192.168.33.128:6380
OK
192.168.33.128:6380> get name
"geek"
192.168.33.128:6380> del name
(integer) 1