创世神域

Nothing is impossible.

@Puteulanus2年前

02/26
06:09
学习心得

使用Coding的Web IDE创建bluemix的SS容器

2016/10/27 更新:增加了 kcptun ,端口 3306 。容器启动过程中会显示一些一言的句子避免等得无聊,启动完成后由 cowsay 显示主要信息。

kcptun 客户端启动命令示例:./client_darwin_amd64 -l 127.0.0.1:4443 -r 169.46.150.18:3306

Windows 用户可以用这个图形化的配置工具 https://github.com/xtaci/kcptun/issues/161

使用 kcptun 后我这儿油管能跑到 1.3M/s。

2016/10/26 更新:修正了 Coding 因为源错误无法安装 Docker 的问题,组织、空间、命名空间改为自动创建,增加 IP 地址与容器的绑定命令。简单说就是在点击邮件中的链接激活 bluemix 账号后就可以直接使用,无需再登陆 bluemix 的面板了。

 

前期回顾:https://www.puteulanus.com/archives/783

貌似是因为官方从 ibmnode 镜像里移除了 SSH 的缘故,导致在网页上创建容器之后连接 22 端口会出现无法连接的情况。由于 Bluemix 网页控制台只提供了极有限的功能支持,现在只能使用官方推荐的 cf 命令行工具来构建镜像并创建自己的容器。

最大的难题在于,cf 工具的 ic 插件依赖于 docker,而 docker 需要内核在 3.10 以上。几乎所有 OVZ 的 VPS 内核版本都是 2.6,包括 Cloud9 和 CodeAnyWhere。之前的解决办法是在按量的全虚拟化 VPS 上进行操作【如 vultr】。不过在全部试过一遍之后,终于还是找到了两家可以方便安装需要的环境的在线 IDE——Koding 和 Coding。Koding 内核版本是 3.13,而 Coding 则炫酷的直接上了 4.2。鉴于 Coding 在国内访问效果更好,而且可以免注册使用在线 IDE,就用它作为教程的平台了。

 

下面开始操作步骤。

打开 http://t.cn/RGNG40Y ,以游客的身份获得一个临时的在线 IDE 使用权。

展开位于下方的终端,执行 wget 'https://coding.net/u/tprss/p/bluemix-source/git/raw/master/start.sh' 下载脚本文件。

执行 bash start.sh ,并在提示输入 Email 时使用 Bluemix 的账号进行登录。脚本会自动安装所需的环境与工具,构建 SS 镜像并创建运行的容器。

脚本运行完后会在屏幕上打印出随机生成的 SS 密码,以及容器的 IP 地址。默认端口为 443,加密方式 aes-256-cfb。

 

注意几点:

1.Bluemix 给容器绑定公网 IP 的速度挺慢,我在脚本里延迟了 30 秒,如果最后输出的结果中还是没有公网 IP,可以去网页控制台查看容器的公网 IP,或者稍等一会儿自己执行 cf ic ps 查看。

2. 脚本适用于注册完毕 Bluemix 并且设置好了命名空间的账户,如果是新注册的账户,需要先在网页控制台尝试创建容器,照提示设定完命名空间之后才可以使用脚本。

3. 脚本创建容器时会申请一个新的公网 IP 并绑定容器,每个账户有两个免费公网 IP 的限额,所以一定要注意已申请 IP 需要是 0 或者 1,如果账户里已经有两个空闲的 IP 最好先用 cf ic ip release IP地址 释放掉然后再执行脚本,不然可能超出免费限额产生扣费。

4. 脚本主要是构建了一个镜像,使用镜像创建了一个容器,并申请了一个 IP 地址分配给它。如果在执行中途因为一些意外失败了,需要清除安装痕迹重新尝试的话,只需要删除容器、镜像、IP 就可以了。IP 地址可以执行 cf ic ip list 查看,使用 cf ic ip release IP地址 进行释放;镜像可以使用 cf ic images 进行查看,使用 cf ic rmi IMAGE_ID 进行删除;容器执行 cf ic rm -f ss 就能删掉了,如果出现错误提示的话可以去网页控制台删。

5. 脚本默认创建美国区域的容器,需要在英国区域创建的得自己改 cf login 的参数。

 

使用Coding的Web IDE创建bluemix的SS容器

  1. Pingback Bluemix搭建SS教程 | 创世神域

    1. Puteulanus 文章作者
      UnknownUnknownUnknownUnknown

      测试了一下,非常用端口和UDP都不可以。。SS换到4443端口之后telnet无法再打开连接,53倒是可以TCP监听,但装了个simpleDNS之后容器外无法得到查询结果(time out)。在容器内DNS查询与连接4443端口都是正常的,似乎是bluemix的容器外有一层总的防火墙,拒绝掉了非常用端口以及UDP的数据。

      回复
        1. Puteulanus 文章作者
          UnknownUnknownUnknownUnknown

          在命令行使用 cf ic exec -it ss bash (ss为容器名) 可以直接交互运行bash,等同于SSH连接了容器。新建的容器要SSH的话可以使用tutum的系统镜像(如 https://hub.docker.com/r/tutum/ubuntu/ )来创建,cf ic run的时候把22的TCP打开,应该还是可以SSH连接的。注意下tutum的镜像是在启动时生成的SSH密码,容器启动完要用 cf ic logs 容器名 来查看密码。。

          回复
      1. wang
        Google Chrome 60Google Chrome 60Windows 7Windows 7

        俺是小白啊。之前谢谢您的文章让在下可以免费使用ss。刚刚运行下还是原来的提示。
        FAILED

        {
        “code”: “IC5205E”,
        “description”: “The free trial for single containers and scalable groups is no longer available. To try out IBM Blu
        emix Container Service, create a lite Kubernetes cluster instead.”,
        “environment”: “prod-dal09”,
        “host_id”: “177”,
        “incident_id”: “414-1504265250.346-290063”,
        “name”: “Sunset”,
        “rc”: “403”,
        “type”: “Provisioning”
        }

        FAILED
        The attempt to retrieve client certificates failed.
        Use “cf login” to log in again, or try again later.

        FAILED
        The IBM Containers CLI must be initialized. Run “cf ic init” to initialize it.

        就是这三种提示。我还是用的webIDE,还是使用上面的脚本。

        回复