5分钟内构建用于ONTAP的FabricPool的Nginx代理的方法(包括示例的nginx.conf配置文件)
聊天
使用Nginx作为ONTAP透明代理时的安装和配置方法如下。
如果要在ONTAP中使用vserver http-proxy create显式地指定非透明的代理服务器,则无法使用此步骤。(非透明类型要求ONTAP通过http连接层发送CONNECT请求到代理服务器,但是按照以下步骤创建的Nginx没有安装处理CONNECT请求的模块,因此需要单独添加模块或者使用Squid等其他方法。)
目录
-
- FabricPool功能和优点
-
- 什么情况下需要使用代理?
-
- 代理安装位置的操作系统设置
-
- Nginx安装和配置
- 相关信息
1. FabricPool的功能和优势
NetApp公司的ONTAP操作系统具有数据层次化功能(从ONTAP 9.2版本开始)。 它可以在本地磁盘上以4KB的块为单位判断数据是否为冷数据,然后将数据透明地移动到对象存储中,以减少本地存储的容量。
这个功能的详细细节将在“6.相关信息”的文章中提供,但是由于存储在本地环境的数据无法直接发送到对象存储,可能存在需要通过代理服务器来建立中间路径的情况。因此,在本文章中将提供有关如何构建代理服务器的方法。
关于为NetApp CBS(云备份服务)配置代理设置,将在另一篇文章中进行说明。
2. 什么情况下需要使用代理?
在写出需要代理的情况之前,我们先整理一下与对象存储的三种通信方法。
-
- 互联网连接
-
- (通过SSL/TLS对ONTAP和对象存储之间的加密)
-
- 互联网虚拟专用网
-
- (通过VPN对本地路由器和云之间的加密)
-
- 私有连接线路
- (如AWS Direct Connect、Azure Express Route、GCP Partner Interconnect等。不加密)
无论是第2种模式还是第3种模式,无论路径是否加密,ONTAP都会默认启用SSL/TLS与对象存储进行通信。
3. 配置Proxy在CentOS上的设置。
基于CentOS,我将总结一些要点。(根据需要可能会添加附注。)
-
- /etc/resolv.confが正しく設定され、yumコマンドが使えること(インターネット側の名前解決)
-
- データ階層化先のオブジェクトストレージの名前解決が意図したIPに解決できること
-
- クラウド上のインスタンスは、オブジェクトストレージのプライベートエンドポイントを内部IPに名前解決できることが多いのですが、うまういかない場合には必要に応じてhostsを使って宛先IPを曲げることも検討。
-
- SELinuxが正しく設定されていること。
-
- (検証用途であればOFFにしてしまいましょう。)
-
- # vi /etc/selinux/config
-
- SELINUX=disabledに変更して、shutdown -r now
-
- # getenforceで確認
- https://qiita.com/mattsun/items/470581ff34f87c7eb21d
4. Nginx的安装和设置。
(1)安装OpenSSL
假设以root权限执行。
安装新软件:yum install openssl openssl-libs
进行更新:yum clean all
yum update openssl openssl-libs
(2) 创建加密密钥和自签名证书
mkdir /etc/nginx
mkdir /etc/nging/ssl
openssl req -new -x509 -sha256 -newkey rsa:2048 -days 2190 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key
(-daysは365日 x 6年=2190日で指定)
chown root:root -R /etc/nginx/ssl/ sudo chmod 600 /etc/nginx/ssl/*
chmod 700 /etc/nginx/ssl
(3) 安装 yum-utils
执行命令 yum install yum-utils
在中文中重新表述如下:
(4) 创建Repo文件
使用vi编辑器打开/etc/yum.repos.d/nginx.repo文件。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
(5)安装和配置自动启动 Nginx
yum install nginx
systemctl enable nginx
systemctl start nginx
(6)组成文件
访问/错误日志 /var/log/nginx/*
NGINX二进制文件 /usr/sbin/nginx
配置文件
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
(7)修改nginx.conf文件
使用vi命令打开/etc/nginx/nginx.conf文件
server {
listen 443 ssl;
server_name nginx;
ssl_certificate /etc/nginx/ssl/nginx.pem;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
keepalive_timeout 70;
sendfile on;
client_max_body_size 30720M;
client_body_buffer_size 5m;
location / {
proxy_pass https://s3.endpoint.domain.com:443/;
proxy_pass_header Server;
}
}
-
- listen 443 ssl; でNginxがTCPポート443でSSL/TLSをListen。
-
- client_max_body_size でこのNginxが受け付けるデータの最大サイズを指定。
-
- (FabricPoolの場合、4KBのブロックを1000個まとめて約4MBのオブジェクトにしてデータを階層化するため、少なくとも5M程度を指定する必要あり。これを行わないと、データがNginxで捨てられる。)
-
- Nginxマニュアル→ http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
-
- client_body_buffer_size でNginxが扱うデータのメモリバッファを調整する。この値が少ないと急激なデータ送受信が発生した際にNginxサーバ内のディスクに一時的にデータを書き出すため、性能が遅くなる場合がある。メモリを多めに積んでいる場合は大きくすることを検討。
-
- Nginxマニュアル→ http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
-
- proxy_passでFabricPoolの階層化先のオブジェクトストレージのFQDNとポート番号を指定。
-
- proxy_pass_headerにServer;を指定することで、オブジェクトストレージがHTTPヘッダー内に付与するServer;ヘッダーをNginxはそのままONTAP OSにパスするようになる。これを付けないとServer;ヘッダーにNginxのバージョンなどが付与されることがあり、対向のオブジェクトストレージが何かONTAPが判断できなくなることがあるので、特にオブジェクトストレージにNetApp StorageGRIDなどを使っている場合には必須。
- Nginxマニュアル→ http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header
除了这个设置之外,可能也可以考虑使用worker_processes auto;等方式来确保Nginx正确地使用多核心。
完成设置后,请重新启动服务。
systemctl start nginx
由于在/var/log/nginx/目录下会生成访问日志,因此在进行ONTAP的FabricPool设置时,需要监控日志。
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
请提供参考信息
以下是两个有关nginx的链接:
1. http://nginx.org/en/linux_packages.html
2. http://vdeep.net/nginx-oreore-ssl
5. 相关信息
- 関連情報
“在进一步补充说明中,只说明了代理的设置方式,但将通过代理传输到FabricPool的配置将另行说明。”
- FabricPoolの関連技術情報