唉,要搭个 SOA 的基建架子,感觉自己学那么多东西会忘掉,所以不如开个流水账话题来记录一下好了
装系统
整个系统结构是这样的。一个服务器做 Nginx 门面,两个跑业务程序的节点服务器,一个数据库服务器。门面和节点都是双核 4GB 内存,垃圾阿里云又不让我买那种单核 1GB 的,不然还能省点钱。数据库比较厉害,大了一半,虽然硬盘还是那么一点。
我写了点运维脚本让流程半自动化,买回来之后改成了统一密码,写了个脚本通过 ssh 自动做了这几件事情:
- 新建自己的用户(并不喜欢用 root 干所有事情,宁愿 sudo su)
- 初始化自己的密码(这样搞定之后就能直接 ssh-id-copy 了)
- 把自己加入管理员组( \ sudo / )
- 安装 epel 源( CentOS 7.4 嘛)
- 更新系统软件(默认镜像都是旧的软件不喜欢)
- 安装自己的服务器软件( nginx、 java 、 tmux 、 htop 、 doker ……)
- 重启(懒得逐个服务器重启)
嗯。四台服务器我就是一边喝奶茶一边等着输密码。
搭数据库
搞定之后呢,我首先搭数据库。yum install mairadb-server -y
。启动 mariadb 的守护进程,然后运行一遍 secure installation 就好了。
配置用户方面,因为是数据库节点,所以我给用户设定的 host 是整个 C 类网段,app_xxx@172.23.4.%
这样就好了,再在同网段的服务器上测试一下登录,搞定。
搭应用
嘛公司的垃圾应用我就不说啥了,jeeSite 只适合拿来快速交付的,这沙雕就拿来做产品,不说了。
节点机上面我分别做了两次,因为觉得就两台机子没必要故意写个脚本了。安装 tomcat 把 war 包丢进去,数据库配置就换一下 ip 就行了,访问两个节点的 8080 ,都活了,搞定。
不过我并没有首先直接访问 8080,而是用了 ssh 隧道拉到本地打开了。
1 | ssh -v -NT -L 8080:localhost:8080 server_address; |
(喜欢 -v 参数是因为我喜欢这种看临时运行的进程的 log (wwww
搭门面
配置一下 nginx 就好了,因为内网都是互通的,proxy pass 到这些服务器的端口就好了。我有个习惯,喜欢把 nginx.conf 内的 server 都丢到同级 server.conf.d 内,分文件存放,然后在 nginx.conf 里 include,这样方便处理很多。
负载均衡的配置我觉得需要稍微记录一下,因为就只有这里我是需要去查资料的。
1 | upstream nodes { |
写好保存,nginx -t
测试一下配置文件无误,然后就能nginx -s reload
了。
测试
建议同时开启两个节点以及门面服务器的 journal 以获得更好的玩耍体验(大雾
1 | journalctl -u tomcat -f |
不断访问门面的公网 IP 就能看到两个服务器的 tomcat 轮流出 log 了
wwwwwww
(调优?以后吧