碎碎念
最近想要尝试redshift的一个叫做重新定位的功能,重新定位触发之后会停止当前的集群,转而在同一个区域的另一个可用区中启动一个一样的集群,这个过程视情况会花上10到60分钟不等。
但是目前项目中连接到redshift用的是私有ip,很多运维工具也是使用私有ip,这样做虽然简单,有时候用脚本处理ip也很方便,但终究有一个大问题——需要保持ip地址不变。于是改用终端节点连接的方式
需要的信息
由于本次使用的是从本地的DBeaver连接到跳板机,再从跳板机连接到redshift的结构(这也是大多数环境中会用到的结构,公网跳板机和内网服务)
所以在正式配置之前需要准备的信息有:
1 在redshift的控制面板中找到终端节点的url,并且知道了redshift的数据库名,用户名,密码
2 跳板机的host,用户名,密码(或者密匙)
3 在本地安装好DBeaver(或者类似的数据库工具)
配置数据库连接
打开工具栏的 数据库 → 创建新连接 后,在弹出的界面的搜索栏中搜索redshift
选择了之后可以看到创建连接的详情页面,在main页面中选择host方式连接,然后把redshift控制台复制的终端节点url输入进来。
注意:从控制台复制的终端节点的url中,在最末尾有 :dev:5439 字样的要删除掉,如下图所示,末尾要确保是以 .amazonaws.com结尾,然后删除掉的那两个东西分别要填入 端口 和 数据库名称中
然后点击ssh标签,进入到ssh跳板机的设置
按照提示文字输入即可
测试连接
配置好之后在配置页面左下方有一个测试按钮,点击之后发现连接已经成功
此时的Redshift的IP地址是
上文说过,重新定位之后ip地址会完全变化,使用了ip的数据库连接也会随之全部失效
所以为了验证终端节点的适应性手动出发重新定位功能
选择一个其他的可用区
切换到可用区2后再次测试
首先看一下ip地址,不仅公网ip变化了,私有ip也变得一塌糊涂
但是好在只要是使用了终端节点就能够不管ip如何变化,都能够将终端节点转化成最新的ip地址
所以连接仍然保持有效
切换回可用区1后再次测试
到这一步的时候我有个疑问:
从可用区1切换到可用区2的时候确实ip会改变,但是如果再切换回去的话,私有ip会复原吗
于是试着切回去,结果是ip照样我行我素地变化着
终端节点连接还是发挥稳定
综上,既然使用了aws的云服务,就尽可能使用终端节点或者服务id这种不变的东西,代替可变化的某种参数,在各种服务发生变化的时候不仅能够保证各种连接健康维持,还能够减少运维不必要的压力。