Nginx

https证书生成

月盾

生成crt证书

openssl req -new -x509 -key domain.key -out domain.crt -days 365

将CRT转换为CSR:

openssl req -new -key domain.key -out domain.csr

gRPC负载均衡

月盾

gRPC是谷歌开发的跨语言(C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java)RPC框架,跨语言是指可以使用gRPC进行个语言之间的通信,例如:PHP可以对java进行远程调用。

在系统架构中,我们会把多个系统公共的模块拆分出来做成单独的服务,可以提供RESTful接口,也可以为了低延迟快速响应而提供RPC接口。如果选择的是gRPC,上线后发现多个系统都请求这个RPC服务提供者,而且流量很大的时候负载过高导致崩溃。为了降低负载和提高可用性,理所当然的要做集群,用nginx作为代理服务器,幸运的是nginx版本为1.13及以上支持了gRPC的负载均衡。那么请看以下配置:

upstream grpcservice {
    server localhost:50051;
    server localhost:50052;
}
server {
    listen       8080  http2;#需要加http2
    server_name  localhost;

    location / {
        grpc_pass grpc://grpcservice;#以grpc为前缀
    }

    grpc_connect_timeout 10;
}

配置好nginx以后,客户端需要连接到localhost:8080来调用远程服务。 效果图: grpc-nginx

可以看到,一次任务的多个请求两个RPC服务器都有输出,证明请求被分配到了两台服务器上。

虽然我们使用了两台服务器来保证性能和可用性,但是当其中一台服务器挂掉以后发现部分请求响应非常慢。

grpc_nginx2

原因是服务器虽然宕机,但是请求还会发送到挂掉的服务器上,然后等待超时(默认1分钟),超时后再请求另外的服务器,重新请求以后可能还会再次分配到这台宕机的服务器。为了能加快响应,配置了grpc_connect_timeout选项,把时间设为5秒,再次测试,大概5秒后就能返回。如果设置更小的时间响应时间会更短。

grpc_nginx3

新阿里云服务器一些基本设置

月盾

修改terminal apt-get update更新软件源,安装zsh,设置默认terminal为zsh,chsh -s /usr/bin/zsh。非root用户需要在root权限下修改/etc/passwd文件才能实现。

安装git

apt-get install git

nginx设置:

sudo /etc/init.d/nginx restart # or start, stop

sudo service nginx restart # or start, stop

有时候我们改了配置文件只是要让配置生效,这个时候不必重启,只要重新加载配置文件即可。sudo nginx -s reload

目录/etc/nginx/sites-available/下增加文件配置反向代理,并软链接到/etc/nginx/sites-enabled/

mongodb导入数据 启动:

/usr/local/mongodb/bin/mongod –dbpath=/usr/local/mongodb/data –logpath=/usr/local/mongodb/logs –logappend –auth –fork

如需外网客户端连接加参数--bind_ip_all

导入单个collection

./mongorestore -v -h ip -u xxxx -p xxxx –db=blogs -c blogs /home/yuedun/download/xxxx.bson/xxxx/blogs.bson

或导入整个目录

./mongorestore -v -h ip -u xxxx -p xxxx –db=blogs –drop /home/yuedun/download/xxxx.bson/xxxx

没有指定-h参数会报错:Failed: error connecting to db server: no reachable servers 阿里云上-h参数需要内网ip,localhost不行。