工作原理 天翼云资源池,针对四层的TCP请求(TCP监听器),可以通过下述两种方式获取客户端源IP: 1. 在后端主机内配置TOA插件获取客户端的真实源IP地址。TOA是操作系统的内核模块,需要在ELB后端主机中安装TOA插件,以实现后端主机可获取客户端真实源IP地址的目的。具体操作参考——操作步骤(TOA模式)。 2. 在后端主机组上打开“获取客户端真实源IP”(该功能不支持平滑开启,切换到ProxyProtocol需要业务停服升级,请谨慎配置)开关,并在后端主机里开启Proxy Protocol后获取到客户端真实源IP。具体操作参考——操作步骤(Proxy Protocol模式)。该功能具体支持情况请以控制台显示为准。 说明 “获取客户端真实源IP”需要代理服务器和后端主机都支持该协议才能正常使用。如果后端主机不具备解析Proxy Protocol协议能力,打开特性开关可能会导致后端服务解析异常,从而影响服务可用性。 对于操作步骤(Proxy Protocol模式)实际支持情况以控制台展现为准。 操作步骤 TOA模式 1. 准备编译环境 a. 针对Linux内核版本为3.0以上的操作系统。以Centos环境为例。 b. 安装gcc编译器,执行以下命令: sudo yum install gcc c. 安装make工具,执行以下命令: sudo yum install make d. 安装内核模块开发包,执行以下命令: sudo yum install kerneldeveluname r e. 注意开发包的版本需要与内核版本一致,假如自带源里没有对应的内核开发包,可以到以下链接地址进行下载,地址如下: 以3.10.01160.80.1.0.1.el7.x8664为例,下载后执行以下命令安装: rpm ivh kerneldevel3.10.01160.80.1.0.1.el7.x8664.rpm f. 以下步骤是以Ubuntu、Debian环境为例,进行编译环境准备。 g. 安装gcc编译器,执行以下命令: sudo aptget install gcc h. 安装make工具,执行以下命令: sudo aptget install make i. 安装内核模块开发包,执行以下命令: sudo aptget install linuxheadersuname r 2. 编译内核模块 a. 下载TOA内核模块源代码,点击进入常见TOA下载页面 (获取验证码:t7nv)进行下载。 b. 编译模块。执行以下命令: cd src make c. 编译过程若未提示warning或者error,说明编译成功,检查当前目录下是否已经生成toa.ko文件。 3. 加载内核模块 a. 加载内核模块,执行以下命令: sudo insmod toa.ko b. 验证模块加载情况及内核输出信息,执行以下命令: dmesg grep TOA 假如提示信息中包含“TOA: toa loaded”,则证明内核模块已经加载成功。 说明 当CoreOS在容器中编译完内核模块后,需要将内核模块复制到宿主系统,最后在宿主系统中加载内核模块。另外由于编译内核模块的容器和宿主系统共享/lib/modules目录,可以在容器中将内核模块复制到该目录下,以供宿主系统使用 4. 自动加载内核模块 a. 把加载TOA内核模块的命令加到您的启动脚本中,能够保证TOA内核模块在系统启动时生效。 b. 在自定义的启动脚本中添加加载TOA内核模块的命令。具体步骤可参考以下操作: c. 在“/etc/sysconfig/modules/”目录下新建toa.modules文件。该文件包含了TOA内核模块的加载脚本。toa.modules文件内容,请参考如下示例: