AWS Lightsail CentOS7需要手工开启IPv6的方法

我这个blog是放在AWS Lightsail实例上面跑着的,因为家里宽带升级光纤,自己在光猫上打开了桥接和获取ipv6,顺便在家里的华硕路由器上也打开了ipv6之后,就琢磨着什么都用ipv6的方式访问一下。

鉴于这个网站之前只是适配了ipv4,于是就动手折腾一下吧。登录AWS Lightsail的控制台,说是Lightsail实例已经支持ipv6了,也已经提供了一个ipv6的公有地址,在控制台上把防火墙设置一下,放行需要访问的端口。到域名托管服务商那里将域名DNS记录增添AAAA记录,绑定到实例的ipv6地址上面。在等生效期间的时候,ssh到实例上面,修改nginx上面的nginx.conf和vhost下面的配置,把ipv6的访问端口都打开侦听了,并且重启服务。等到DNS传播生效之后,尝试直接用ipv6的地址访问一下:

curl -g -6 -k 'https://sunnyblog.net/'

然后居然反馈超时,用ipv4的方式没有问题。认真检查了nginx的配置,没有问题,用netstat检查tcp6的端口都是侦听着的。一气之下,在控制台上把防火墙全部协议端口都打开,但是无论是用HTTP还是SSH都访问不能。

用ip addr查看IPv6是在的,服务在ipv4上面是正常访问的,配置是正确的,端口是打开了的,也确认我当前网络是能用ipv6访问其他支持的网站的。估计还是CentOS上面是不是有什么配置没有修改好,需要手工弄一下。

在网上搜索一通,各种尝试(当然修改之前都是做个实例快照,备份好才安全,以前血的教训),然后终于找到以下这篇文章《AWS Amazon Lightsail CentOS 7 手动启动IPV6的解决方法》解决了,感谢原博主!大致操作如下:

打开路径/etc/sysconfig/network-scripts,修改文件 ifcfg-eth0,(用centos用户登录之后,sudo su -切换到root用户操作),在最底下添加以下两行并保存退出:

IPV6INIT=yes
IPV6_AUTOCONF=yes

然后重启即可生效!

用curl -6检查可以正常通过IPv6访问网站了!用ipw.cn网站检查也是证明支持IPv6了。折腾终于有个好结果,虽然其实然并卵,不过偶尔动动手还是不错的。

内存太少又没有swap导致MySQL挂了?

把blog从vultr的5刀主机搬迁到aws lightsail最便宜的3.5刀主机上面之后,经常发现blog无缘无故挂了,首页显示“Error establishing a database connection”,实情是MySQL挂了。究其原因,应该是新的主机比较廉价,所以内存只有512MB,虽然我的blog访问量不大,但是这配置跑MySQL还是有点够呛。原本打算做个快照升级到1G的机器。不过上网查了一下,可以尝试启用swap来优化一下。果然lightsail上面的Amazon Linux缺省是没有swap的,512MB内存用光了,MySQL就直接完蛋了。

于是在花钱升级之前,先试试启动swap看看能不能拯救一下穷逼吧。具体操作参考:

如何使用交换文件分配内存充当 Amazon EC2 实例中的交换空间?

AWS EC2添加SWAP分区

观察多几天看看效果如何先……起码上面那篇上传6张图片的帖子终于能正常发布了