001.codis运行自己的自定义环境
1.codis的安装环境见 codis环境搭建
2.自定环境
2.1 容器进程
2.2 启动etcd
etcd的默认端口 2379
nohup etcd --name=codis-demo &>/home/apps/codis/log/etcd/etcd.log &
# 如果启动过程中,出现被锁的异常,可以清理相关历史记录:
$ etcdctl rm --recursive /codis3
2.3 启动codis-server
# 我们先启动一个单节点的server codis-server 本身就是一个redis实例, 我们开启一个端口为16379的server实例
## 后台进程启动
[root@94a1fd93a544 codis]# nohup codis-server --port 16379 &>/home/apps/codis/log/redis/redis-16379.log &
[2] 2079
## 查看运行日志
[root@94a1fd93a544 redis]# tail -90f redis-16379.log
nohup: ignoring input
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.8.21 (a99a681a/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 16379
| `-._ `._ / _.-' | PID: 2079
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[2079] 05 Jul 08:45:00.601 # Server started, Redis version 2.8.21
[2079] 05 Jul 08:45:00.601 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
[2079] 05 Jul 08:45:00.601 * The server is now ready to accept connections on port 16379
2.4 启动dashboard
2.4.1 自定义 dashboard.toml
$ touch /home/apps/codis/dashboard.toml
##################################################
# #
# Codis-Dashboard #
# #
##################################################
# Set Coordinator, only accept "zookeeper" & "etcd"
coordinator_name = "etcd"
coordinator_addr = "127.0.0.1:2379"
# Set Codis Product {Name/Auth}.
product_name = "codis-demo"
product_auth = ""
# Set bind address for admin(rpc), tcp only.
admin_addr = "0.0.0.0:18080"
2.4.2 启动 dashboard
nohup codis-dashboard --config=/home/apps/codis/dashboard.toml --log=/home/apps/codis/log/dashboard/dashboard.log --log-level=INFO &
2.4.3 验证
# 查看整体目录结构
[root@94a1fd93a544 codis]# tree
.
├── dashboard.toml
├── log
│ ├── dashboard
│ │ └── dashboard.log.2021-07-05
│ ├── etcd
│ │ └── etcd.log
│ └── redis
│ └── redis-16379.log
└── nohup.out
4 directories, 5 files
# 路径
[root@94a1fd93a544 dashboard]# pwd
/home/apps/codis/log/dashboard
# 查看日志文件
[root@94a1fd93a544 dashboard]# cat dashboard.log.2021-07-05
2021/07/05 08:50:43 main.go:77: [WARN] set ncpu = 4
2021/07/05 08:50:43 topom.go:100: [WARN] create new topom:
{
"start_time": "2021-07-05 08:50:43.7055979 +0800 CST",
"admin_addr": "172.17.0.2:18080",
"product_name": "codis-demo",
"pid": 2097,
"pwd": "/home/apps/codis",
"sys": "Linux 94a1fd93a544 5.10.25-linuxkit #1 SMP Tue Mar 23 09:27:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux"
}
2021/07/05 08:50:43 main.go:124: [WARN] create topom with config
coordinator_name = "etcd"
coordinator_addr = "127.0.0.1:2379"
admin_addr = "0.0.0.0:18080"
product_name = "codis-demo"
product_auth = ""
2021/07/05 08:50:44 topom.go:282: [WARN] admin start service on [::]:18080
2.5 启动codis-proxy
2.5.1 proxy.toml 文件
$ vim /home/apps/codis/proxy.toml
product_name = "codis-demo"
product_auth = ""
proto_type = "tcp4"
admin_addr = "0.0.0.0:11080"
proxy_addr = "0.0.0.0:19000"
# 目录结构
[root@94a1fd93a544 codis]# tree
.
├── dashboard.toml
├── log
│ ├── dashboard
│ │ └── dashboard.log.2021-07-05
│ ├── etcd
│ │ └── etcd.log
│ └── redis
│ └── redis-16379.log
├── nohup.out
└── proxy.toml
4 directories, 6 files
# 内容浏览
[root@94a1fd93a544 codis]# cat proxy.toml
product_name = "codis-demo"
product_auth = ""
proto_type = "tcp4"
admin_addr = "0.0.0.0:11080"
proxy_addr = "0.0.0.0:19000"
2.5.2 启动
nohup codis-proxy --config=/home/apps/codis/proxy.toml --log=/home/apps/codis/log/proxy/proxy.log --log-level=INFO &
2.5.3 验证
# 目录结构
[root@94a1fd93a544 codis]# tree
.
├── dashboard.toml
├── log
│ ├── dashboard
│ │ └── dashboard.log.2021-07-05
│ ├── etcd
│ │ └── etcd.log
│ ├── proxy
│ │ └── proxy.log.2021-07-05
│ └── redis
│ └── redis-16379.log
├── nohup.out
└── proxy.toml
5 directories, 7 files
# 查看日志信息
[root@94a1fd93a544 codis]# cat log/proxy/proxy.log.2021-07-05
2021/07/05 08:57:03 main.go:88: [WARN] set ncpu = 4
2021/07/05 08:57:03 proxy.go:73: [WARN] [0xc4208cff80] create new proxy:
{
"token": "15fba3007f3c6ee0887749681cb82307",
"start_time": "2021-07-05 08:57:03.1643459 +0800 CST",
"admin_addr": "172.17.0.2:11080",
"proto_type": "tcp4",
"proxy_addr": "172.17.0.2:19000",
"product_name": "codis-demo",
"pid": 2122,
"pwd": "/home/apps/codis",
"sys": "Linux 94a1fd93a544 5.10.25-linuxkit #1 SMP Tue Mar 23 09:27:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux"
}
2021/07/05 08:57:03 main.go:111: [WARN] create proxy with config
proto_type = "tcp4"
proxy_addr = "0.0.0.0:19000"
admin_addr = "0.0.0.0:11080"
jodis_addr = ""
jodis_timeout = 10
jodis_compatible = false
product_name = "codis-demo"
product_auth = ""
backend_ping_period = 5
session_max_timeout = 1800
session_max_bufsize = 131072
session_max_pipeline = 1024
session_keepalive_period = 60
2021/07/05 08:57:03 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:03 proxy.go:231: [WARN] [0xc4208cff80] admin start service on [::]:11080
2021/07/05 08:57:04 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:05 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:06 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:07 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:08 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:09 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:10 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:11 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:12 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:13 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:14 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:15 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:16 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:17 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:18 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:19 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:20 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2021/07/05 08:57:21 main.go:123: [WARN] [0xc4208cff80] proxy waiting online ...
2.6 启动fe
2.6.1 condis.json
$ vim /home/apps/codis/codis.json
[
{
"name": "codis-demo",
"dashboard": "127.0.0.1:18080"
}
]
2.6.2 启动
# 启动
## 命令 nohup codis-fe -d /home/apps/codis/codis.json --listen=0.0.0.0:8080 &
### QA问题
[root@94a1fd93a544 codis]# nohup codis-fe -d /home/apps/codis/codis.json --listen=0.0.0.0:8080 &
[5] 2138
[root@94a1fd93a544 codis]# nohup: ignoring input and appending output to 'nohup.out'
ll
total 28
drwxr-xr-x 3 root root 4096 Jul 5 09:00 .
drwxr-xr-x 5 root root 4096 Jul 5 08:38 ..
-rw-r--r-- 1 root root 86 Jul 5 09:00 codis.json
-rw-r--r-- 1 root root 515 Jul 5 08:50 dashboard.toml
drwxr-xr-x 6 root root 4096 Jul 5 08:57 log
-rw------- 1 root root 468 Jul 5 09:00 nohup.out
-rw-r--r-- 1 root root 124 Jul 5 08:55 proxy.toml
[5]+ Exit 1 nohup codis-fe -d /home/apps/codis/codis.json --listen=0.0.0.0:8080
### 目录结构
[root@94a1fd93a544 codis]# tree
.
├── codis.json
├── dashboard.toml
├── log
│ ├── dashboard
│ │ └── dashboard.log.2021-07-05
│ ├── etcd
│ │ └── etcd.log
│ ├── proxy
│ │ └── proxy.log.2021-07-05
│ └── redis
│ └── redis-16379.log
├── nohup.out
└── proxy.toml
5 directories, 8 files
[root@94a1fd93a544 codis]# ll
total 28
drwxr-xr-x 3 root root 4096 Jul 5 09:00 .
drwxr-xr-x 5 root root 4096 Jul 5 08:38 ..
-rw-r--r-- 1 root root 86 Jul 5 09:00 codis.json
-rw-r--r-- 1 root root 515 Jul 5 08:50 dashboard.toml
drwxr-xr-x 6 root root 4096 Jul 5 08:57 log
-rw------- 1 root root 468 Jul 5 09:00 nohup.out
-rw-r--r-- 1 root root 124 Jul 5 08:55 proxy.toml
### 查看启动失败原因
[root@94a1fd93a544 codis]# cat nohup.out
2021/07/05 09:00:58 main.go:102: [WARN] set ncpu = 4
2021/07/05 09:00:58 main.go:105: [WARN] set listen = 0.0.0.0:8080
2021/07/05 09:00:58 main.go:117: [WARN] set assets = /home/apps/codis/assets
2021/07/05 09:00:58 main.go:121: [PANIC] get stat of /home/apps/codis/assets failed
[error]: stat /home/apps/codis/assets: no such file or directory ### 失败原因
[stack]:
0 /home/apps/devgo/src/github.com/CodisLabs/codis/cmd/fe/main.go:121
main.main
... ...
### 目录
[root@94a1fd93a544 codis]# pwd
/home/apps/codis
### 修复问题
[root@94a1fd93a544 codis]# mkdir -p /home/apps/codis/assets
[root@94a1fd93a544 codis]# ll
total 32
drwxr-xr-x 4 root root 4096 Jul 5 09:02 .
drwxr-xr-x 5 root root 4096 Jul 5 08:38 ..
drwxr-xr-x 2 root root 4096 Jul 5 09:02 assets
-rw-r--r-- 1 root root 86 Jul 5 09:00 codis.json
-rw-r--r-- 1 root root 515 Jul 5 08:50 dashboard.toml
drwxr-xr-x 6 root root 4096 Jul 5 08:57 log
-rw------- 1 root root 468 Jul 5 09:00 nohup.out
-rw-r--r-- 1 root root 124 Jul 5 08:55 proxy.toml
## 重启启动
[root@94a1fd93a544 codis]# nohup codis-fe -d /home/apps/codis/codis.json --listen=0.0.0.0:8080 &
[5] 2151
### 查看启动信息
[root@94a1fd93a544 codis]# cat nohup.out
2021/07/05 09:02:25 main.go:102: [WARN] set ncpu = 4
2021/07/05 09:02:25 main.go:105: [WARN] set listen = 0.0.0.0:8080
2021/07/05 09:02:25 main.go:117: [WARN] set assets = /home/apps/codis/assets
2021/07/05 09:02:25 main.go:132: [WARN] set --dashboard-list = /home/apps/codis/codis.json
2.7 配置codis-admin
前面的2.1~2.6 已经启动了基本的组件,接下来需要我们通过codis-admin把我们的proxy进行分组管理
2.7.1 增加proxy组
/usr/local/bin/codis-admin --dashboard=127.0.0.1:18080 --create-group --gid 1
2.7.2 增加分组
/usr/local/bin/codis-admin --dashboard=127.0.0.1:18080 --group-add --gid 1 -x 127.0.0.1:16379
2.7.3 创建proxy
/usr/local/bin/codis-admin --dashboard=127.0.0.1:18080 --create-proxy -x 127.0.0.1:11080
2.7.4 配置slot
/usr/local/bin/codis-admin --dashboard=127.0.0.1:18080 --slot-action --interval=100
/usr/local/bin/codis-admin --dashboard=127.0.0.1:18080 --rebalance --confirm
3.验证
3.1 进程查看
[root@94a1fd93a544 codis]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 12128 2680 pts/0 Ss 07:41 0:00 /bin/bash
root 2039 2.3 1.3 37192 27388 pts/0 Sl 08:38 0:52 etcd --name=codis-demo
root 2079 0.4 0.2 34800 5704 pts/0 Sl 08:44 0:08 codis-server *:16379
root 2097 1.3 1.5 704804 31208 pts/0 Sl 08:50 0:19 codis-dashboard --config=/home/apps/codis/dashboard.toml --log=/home/apps/codis/log/dashboard/dashboard.log --log-level=INFO
root 2122 0.9 1.5 778244 31132 pts/0 Sl 08:57 0:10 codis-proxy --config=/home/apps/codis/proxy.toml --log=/home/apps/codis/log/proxy/proxy.log --log-level=INFO
root 2151 0.0 0.4 462896 8840 pts/0 Sl 09:02 0:00 codis-fe -d /home/apps/codis/codis.json --listen=0.0.0.0:8080
root 2203 0.0 0.1 47596 3720 pts/0 R+ 09:16 0:00 ps aux