SoftLayer 独立主机购买指南、评价

用过很多国外的主机,从最早开始的1and1,到后来流行的bluehost、HostGator、IXWebhosting, 再换ThePlanet,Godaddy,以及亚马逊的云空间(Amazon EC2)。整体感觉最好的就是Softlayer,是美国顶级的主机提供商。

SoftLayer 成立于2005年,2010年收购 ThePlanet 后发展更快。

主机价格
SoftLayer 主机的价格不菲,独立主机的价格最低也要 $139/月,稍微提高些配置,价格一般在 $180-$250/月左右。

主机功能
SoftLayer 所有服务器提供 KVM 终端连接(相当于你的显示器接到主机上)。所有服务器可以在线重启、开关电源、重装系统、创建镜像,都在控制面板里自己操作,非常方便。

SoftLayer 提供的服务不少,包括硬件防火墙($999/月,好贵!)、IDS 入侵检测、CDN、负载均衡、云主机,支持Citrix Xen、Microsoft Hyper-V、Parallels Virtuozzo、VMWare ESX等主流虚拟技术,提供虚拟私用机柜、虚拟专用机柜、虚拟数据中心等模式,当然这些服务都是另外收费的。

特别推荐云计算
SoftLayer 的云主机很有吸引力,我最喜欢它的SAN磁盘,是Dell EqualLogic的硬件,RAID 50,这样不用担心大多数独立主机会出现的硬盘坏掉的问题。以前租用的独立主机出现硬盘问题真的头大。

云主机可以按小时计费,也可以按月收费。用户还可以创建好主机模板,然后通过API 接口实时生成主机、撤销主机。

云主机配置灵活,你可以根据需要增减CPU个数、硬盘大小、内存大小。当然这些修改会需要重启一次服务器后才生效。

访问速度
SoftLayer 的机房很多,目前主要有 Dallas、Houston、San Jose、Seattle、Washington, DC 五个数据中心,北美访问的速度差不多,中国的访问速度差别比较大。Dallas、Washington 数据中心的服务器,客户普遍反应中国访问的速度比较慢。而位于美国西海岸的Seattle主机,从中国访问的速度就快些。因此建议中国的用户最好租Seattle的主机。虽说租用softlayer主机主要是因为网站客户在北美,但是网站维护人员的访问速度也不能太慢了。

备份系统
SoftLayer 提供专业的EVault备份,每台主机可以申请独立的EVault备份空间,价格大概 $20/20G。EVault 很方便,采用Delta备份技术,备份速度快、节省空间,支持压缩、加密以及Open File的备份(需要另外付费)。强烈推荐使用EVault。

网络配置
SoftLayer 主机的一大特色就是所有系统都配置两个网卡,一个网卡配置外部IP,另一个配置内部IP。内部网卡主要用于系统维护、备份、服务器间文件传输。
同一帐号申请的主机都分配同一个VLAN号码,主机间可以通过内网互联,组建一个虚拟数据中心,不同数据中心的主机间也可以通过设置VLAN来互联。
SoftLayer 支持 PPTP 和 IPSec 连接的VPN到虚拟数据中心,可以提供企业级的服务。
SoftLayer 提供一系列增值服务,例如DNS服务、修改 SWIP 数据、端口控制(修改端口速度)。

IP 管理
SoftLayer 对IP限制比较严格,申请几个IP块可以,一旦申请多了,会被审查,并要提交IP使用的报告,因为目前IPv4的地址已经基本用完。
SoftLayer 系统全面支持 IPv6,同时免费提供大量的 IPv6 地址。

支付方式
SoftLayer 支持信用卡和PayPal支付,财务人员有时会打电话给你确认支付信息是否正确。通常第一次够买时会收到电话。

客服支持
SoftLayer 客服支持很好,提交ticket后15分钟内就有答复。需要注意的是,他们的客服很多,每次回复的不是同一个人。所以提交问题时必须详细描述,以便所有客服能清楚的看到问题所在。希望早日看到SoftLayer能有中文客服 🙂

最后需要提醒大家的是,SoftLayer 提供的服务器最多只预装操作系统和数据库,其它的软件包、应用软件都是需要自己安装的,如果对服务器管理不熟悉,购买独立主机管理起来会比较麻烦。SoftLayer 也提供管理软件,例如 CPanel、Plesk、Helm,但这些都需要收费的。我会陆续在这个个人博客( https://www.huangzhong.ca/ )中介绍主机管理、维护的开源软件和注意事项,欢迎大家访问。

通过 imapsync 实现邮件服务器迁移 (支持 IMAP 的邮箱)

本帖记录利用 imapsync 工具,从CentOS服务器上将Postfix邮箱转移到新的CentOS主机上的方法。
imapsync 用于同步两个imap邮箱 (仅适合迁移邮箱或者备份,不适合同步两个有用户同时访问的 imap 帐号)

首先在新的服务器上安装好邮件系统,建好相同的邮箱。

接着安装 imapsync (可以装在要同步的任意一台服务器上,也可以装在第三方的服务器上)
yum install imapsync

以下面的数据为例:
旧的邮件服务器为 mail1.mazentop.com
新的邮件服务器为 mail2.mazentop.com
旧的邮箱地址 support@mazentop.com
新的邮箱地址 support@mazentop.com
旧的邮箱密码保存在文件 /etc/mailpass1
新的邮箱密码保存在文件 /etc/mailpass2

那么以下命令可以将邮箱 support@mazentop.com 中的所有内容,从服务器 mail1 复制到服务器 mail2 上的 support@mazentop.com 邮箱中:
imapsync --host1 mail1.mazentop.com --user1 support@mazentop.com --passfile1 /etc/mailpass1 --host2 mail2.mazentop.com --user2 support@mazentop.com --passfile2 /etc/mailpass2

无法访问Godaddy DNS服务器,域名解析被屏蔽

今天发现我的好几个网站从国内无法访问,但是国外打开正常。从国内Ping出现找不到DNS服务器,我使用的是Godaddy的免费DNS服务器: mns01.domaincontrol.com 和 mns02.domaincontrol.com ,看来又被中国的GFW防火墙给屏蔽了。

只好转用国内的DNS解析,dnspod.cn 提供免费的DNS解析服务,功能还可以,但一个帐号只能有一个免费的域名。

如何暂停PowerShell直到一个外部进程执行结束后返回?

在PowerShell 里启动Win32的外部进程后,控制会立即返回PowerShell并执行下一条指令。如何让PowerShell停止执行下一条指令,等待前面的进程运行结束呢?

可以使用 [diagnostics.process] 来启动Windows批命令或者其他应用程序,并通过WaitForExit等待进程结束
$batfile = [diagnostics.process]::Start(“D:\Demo\My_Script.bat”)
$batfile.WaitForExit()

然后PowerShell才继续执行余下的指令。

MSSQL的SSIS中获取FTP文件列表的方法

MSSQL 2005 的SSIS里提供的FTP包括以下功能:
Send files 上传文件
Receive files 接收文件
Create local directory 创建本地目录
Create remote directory 创建远程目录
Remove local directory 删除本地目录
Remove remote directory 删除远程目录
Delete local files 删除本地文件
Delete remote files 删除远程文件

没有可以用于列表、下载所有FTP服务器上文件的功能。

SSIS中的 Foreach Loop Container 功能只适用本地目录、文件,无法处理FTP服务器上的目录和文件。

我们可以通过 Script task 脚本功能来实现FTP远程文件处理。下面的SSIS脚本演示获取远程FTP的所有 Demo*.xls 文件,然后下载这些文件,并在FTP服务器上删除所有已下载的文件。

其中 SetWorkingDirectory 可以用于指定FTP上的工作目录。

    Public Sub Main()
        Dim result As Integer
        Dim conMan As ConnectionManager
        Dim ftp_client As FtpClientConnection
        Dim sFolderNames() As String
        Dim sFileNames() As String
        Dim sFileName(0) As String

        conMan = Dts.Connections("MyFTP")
        ftp_client = New FtpClientConnection(conMan.AcquireConnection(Nothing))

        ftp_client.Connect()
        ftp_client.SetWorkingDirectory("incoming")
        ftp_client.GetListing(sFolderNames, sFileNames)

        For Each fileName As String In sFileNames
            sFileName(0) = fileName
            If fileName.EndsWith("xls", StringComparison.OrdinalIgnoreCase) And fileName.StartsWith("Demo", StringComparison.OrdinalIgnoreCase) Then
                ftp_client.ReceiveFiles(sFileName, "D:\Test\ftp_data\", True, False)
                ftp_client.DeleteFiles(sFileName)
            End If
        Next fileName

        ftp_client.Close()

        Dts.TaskResult = Dts.Results.Success
    End Sub

现在所有需要的文件都传到本地目录,就可以使用 Foreach Loop Container 循环容器来处理了。