运行如下命令进行快速安装
下载项目压缩包
wget https://coldcdn.com/api/cdn/mipfsdbkfx/ipfs/QmRazyHc14z75FPaiuY4UveXRwb8ketuhtqpQVcEe88b99?filename=Metis-Deploy.zip -O Metis-Deploy.zip
执行如下命令
# 解压项目目录
unzip Metis-Deploy.zip
# 先进入本项目目录
cd Metis-Deploy
# 安装 python 相关工具(Ubuntu 18.04 默认的 python 版本为 python2.7, python3 版本为 python3.6)
sudo apt install -y python python-pip python3 python3-pip
# 安装ansible
pip install ansible-2.7.11.tar.gz
# 安装其他依赖模块
pip install -r ./requirements.txt
安装并配置mysql
安装MySQL
- 检查系统中是否已经安装,在终端里面输入
sudo netstat -tap | grep mysql
若没有反映,没有显示已安装结果,则没有安装。如若已安装,可以选择删除。(删除方法放在下面)
- 如果没有安装,则安装MySQL。在终端输入
sudo apt-get install mysql-server mysql-client
在此安装过程中会让你输入root用户(管理MySQL数据库用户,非Linux系统用户)密码,按照要求输入即可。
- 测试安装是否成功,在终端输入
sudo netstat -tap | grep mysql
也可通过登录MySQL测试
在终端输入
mysql -uroot -p
接下来会提示你输入密码,输入正确密码,即可进入
修改远程访问mysql
- 修改配置文件的端口绑定
打开的目录可能会根据MySQL的版本稍有不同,可以先尝试打开/etc/mysql/my.cnf
这个配置文件,若该文件不存在或文件内容为空,则尝试下面的文件路径。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在下面行的开头加上#,注释掉该行,然后保存退出vim:
bind-address = 127.0.0.1
- 修改访问权限
进入mysql,输入如下命令,输入密码,进入mysql命令行
mysql -u root -p
授权root用户访问权限,并刷新权限,此处的root可用其它MySQL用户替换,password部分需替换为该用户对应的密码
grant all privileges on *.* to root@"%"identified by"password"with grant option;
flush privileges;
exit;
- 重启mysql服务
service mysql restart
删除数据库 并清除操作
首先删除mysql:
sudo apt-get remove mysql-*
然后清理残留的数据
dpkg-l|grep ^rc|awk'{print $2}'|sudo xargs dpkg -P
它会跳出一个对话框,你选择yes就好了。然后安装mysql。
修改配置文件
配置数据库
# 登录数据库
mysql -u root -p
# 进入MySQL之后输入
## 授权root用户访问权限,并刷新权限
grant all privileges on *.* to root@"%"identified by"metis_root"with grant option;
## 创建新用户并授权访问权限
grant all privileges on *.* to metis_admin@"%"identified by"admin_123456"with grant option;
flush privileges;
exit;
# 重启MySQL服务
service mysql restart
添加test用户
sudo adduser test
这里的test
,就是inventory.ini
里面的ansible_ssh_user
的值,要一一对应。
test
的用户密码就是ansible_ssh_pass
和ansible_sudo_pass
的值。
添加test
到sudoers
sudo vim /etc/sudoers
添加一行,并按:wq!
退出
test ALL=(ALL) ALL
修改inventory.ini
配置文件
由于我开启了DMZ并指向服务器,因此配置文件中的xxx.xxx.xxx.xxx
地址均为内网地址,各位可以按照说明自行修改。
# 库存文件,主要用来配置主机列表和主机组
# 网关,一个组织有一个网关服务
[via]
xxx.xxx.xxx.xxx ansible_ssh_user="test" ansible_ssh_pass="123456" ansible_sudo_pass="123456"
# 调度,一个组织有一个调度服务
[carrier]
xxx.xxx.xxx.xxx ansible_ssh_user="test" ansible_ssh_pass="123456" ansible_sudo_pass="123456"
# 管理台,一个组织有一个管理台服务
[admin]
xxx.xxx.xxx.xxx ansible_ssh_user="test" ansible_ssh_pass="123456" ansible_sudo_pass="123456"
# 资源节点,一个组织可以配置多个资源服务
[data]
xxx.xxx.xxx.xxx ansible_ssh_user="test" ansible_ssh_pass="123456" ansible_sudo_pass="123456"
# 计算节点,一个组织可以配置多个计算服务
[compute]
xxx.xxx.xxx.xxx ansible_ssh_user="test" ansible_ssh_pass="123456" ansible_sudo_pass="123456"
# 注册中心,一个组织要配置奇数个(3,5,等)注册中心,方便 raft 选择leader
[consul]
xxx.xxx.xxx.xxx ansible_ssh_user="test" ansible_ssh_pass="123456" ansible_sudo_pass="123456"
## Global variables
[all:vars]
# 集群的名称,自定义即可
cluster_name = haypo
# 部署服务开关
enable_deploy_via = True
enable_deploy_carrier = True
enable_deploy_admin = True
enable_deploy_data = True
enable_deploy_compute = True
enable_deploy_consul = True
# consul 服务的端口,根据自己的部署情况进行设置,数量要和 consul 组里面的 ip 数量一致。
consul_server_port = [8200]
consul_serf_lan_port = [8300]
consul_serf_wan_port = [8400]
consul_http_port = [8500]
consul_dns_port = [8600]
# admin web 服务证书相关配置信息
enable_tls = False # 是否启用 https,启用设置为 True,需要配置证书和相应的域名,证书里面的密码套件等,不启用设置为 False,忽略下面的配置。
admin_server_name = metis-admin.demo.network
admin_ssl_protocols = "TLSv1 TLSv1.1 TLSv1.2"
admin_ssl_ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
# admin web 的 mysql 相关用户名密码
mysql_root_password = metis_root
amin_user = metis_admin
admin_password = admin_123456
# admin web 服务端口号
admin_web_port = 9090
# carrier 外网 ip 地址
carrier_external_ip = xxx.xxx.xxx.xxx
# carrier 服务端口号
carrier_pprof_port = 7701
carrier_rpc_port = 10030
carrier_grpc_gateway_port = 7702
carrier_p2p_udp_port = 10031
carrier_p2p_tcp_port = 10032
# via 外网 ip 地址
via_external_ip = xxx.xxx.xxx.xxx
# via 服务端口号
via_port = 10040
# data 端口号,根据自己的部署情况进行设置,数量要和 data 组里面的 ip 数量一致。
data_port = [30000]
# compute 端口号,根据自己的部署情况进行设置,数量要和 compute 组里面的 ip 数量一致。
compute_port = [40000]
开始运行节点
在Metis-Deploy
目录下执行
ansible-playbook -i inventory.ini deploy.yml
ansible-playbook -i inventory.ini start.yml
此时RPC端口为10030
,可以在浏览器里输入服务器地址:80
即可访问页面。
账号密码都是admin
,验证码随便写。