Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

唉,要搭个 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
upstream nodes {
server 172.30.1.1:8080 max_fails=3; # node 0
server 172.30.1.2:8080 max_fails=3; # node 1
}

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
#root /usr/share/nginx/html;

location / {
proxy_pass http://nodes;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

写好保存,nginx -t 测试一下配置文件无误,然后就能nginx -s reload 了。

测试

建议同时开启两个节点以及门面服务器的 journal 以获得更好的玩耍体验(大雾

1
journalctl -u tomcat -f

不断访问门面的公网 IP 就能看到两个服务器的 tomcat 轮流出 log 了

wwwwwww

(调优?以后吧

评论