2019年6月

搭建集群其实就是配置网络,本文以 VMware 和 CentOS 为例,其他的虚拟机软件和发行版设置大体相同

一般虚拟机网卡有三种选择:

  • 桥接模式:
    把虚拟机网络部署到和宿主机同级局域网下,路由是宿主机连接的物理路由器,有外网
  • 仅主机模式:
    仅在虚拟机和宿主机之间搭建局域网,没有外网
  • NAT 模式:
    在仅主机模式的基础上做了 NAT 映射,既有内网也有外网,相当于把宿主机当作软路由

Snipaste_2019-06-30_19-36-24.jpg

为了让集群内每一台机器都有静态的内网ip,又有外网访问权限,同时又不受不同物理路由器的 DHCP 策略影响,NAT 模式显然是最好的办法。下面就来配置 NAT 模式的虚拟网卡和虚拟机静态 ip




- 阅读剩余部分 -

在虚拟机上搭建Hadoop+HBase集群

下图配置的虚拟机*3,来搭建集群

Snipaste_2019-06-28_16-49-10.jpg

之前是在我吃灰的公网服务器上搭的,服务器网络环境比较复杂:共有三台公网服务器,两台处于同一内网,第三台单独在外网

搭建的时候Hadoop监听ip0.0.0.0,没有问题,集群可以正常访问,3台DataNodes全部在线;

但是搭建HBase的时候,如果Master监听0.0.0.0,就无法作为clinet访问hdfs://0.0.0.0:9000;如果Master监听127.0.0.1,就无法作为server向外网(这里指除loopback之外)广播本机端口导致zookeeper通信失败。如果都配置为外网ip,则根本无法监听。。。

笔者使用的腾讯云服务器类似亚马逊的EC2,问题详见

Hadoop Wiki - BindException

以及:

腾讯云论坛 - 【已解决】ifconfig看不到外网ip

搞了两天最后发现是这个NAT公网ip的问题,tears~

服务器上即使全写公网ip也不行,因为这种奇葩的NAT转换会导致服务无法直接监听自己的公网ip,换虚拟机正常的局域网ip就没问题,祭奠这两天来对着黑窗口看过的所有日志😭

如果头铁的话,应该也可以配置这种带NAT的复杂的内外网网络集群,只是针对每台主机需要单独配置hosts和对应的监听/访问地址配置。

- 阅读剩余部分 -

之前就有过一次,写文章的时候添加 emoji,提交后数据库错误🤪,然后那篇文章就没有用那个活泼又传神的 emoji

后来谷歌了一下,其实 Mysql 是支持 emoji 的,不过一般中文用的字符集都是 utf8,标准的 uft8 只支持 3 个字节,而一个 emoji 有4个字节,把数据库的字符集改为支持 4 个字节的 utf8mb4 字符集就行了,当然 Typecho 的设置也要相应的改变一下 Mysql 连接参数。

- 阅读剩余部分 -