鏡像伺服器搭建花費
① 公司要搭建私有雲,成本是多少
雲成本:出口寬頻、出口防火牆、核心交換機、接入交換機、伺服器N台。
維護:配置需要的鏡像模板:centos、ubuntu 、win
我的收費:
技術費用:0-50台 20w 50-100台 30w <200台 50w (一次性安裝費用。不包後期維護。不接受分期付款,一次性付款)
設備費用:單位出,可以由各種差設備組成,盡量節省成本。但是性能會影響大。我會根據設備情況,盡可能優化,選擇合適的設備作為核心
② 怎麼搭建本地Ubuntu鏡像伺服器
一.需求分析
最近公司軟體Team 有個需求是這樣的:能不能在區域網搭建一個Ubuntu 鏡像伺服器,
這樣作的好處是可以節省Ubuntu某些常用工具的安裝時間。
二.部署過程
2.1 測試環境
目前在公司內有一台能連接到外網的Ubuntu機器, IP : 192.168.8.173 ,
Ubuntu版本為Ubuntu 9.04 i686。
2.2 搭建步驟
為了創建Ubuntu mirror 伺服器,最少需要60G硬碟空間,Ubuntu每個版本都有32 bit
和64 bit兩個版本,有兩組deb包。當然可以創建Ubuntu一個版本的32 bit 和64 bit 的
鏡像伺服器,也可以創建全部版本的鏡像。
這里使用sohu 公司的mirror地址作為本地Ubuntu Source 伺服器,使用sohu的原因是:
1. sohu的Ubuntu Source 伺服器速度相當快
2. sohu 的ubuntu Source 伺服器每天會和Ubuntu官方伺服器同步一次,這樣可以保
證我們使用的是最新的軟體包。
修改方式如下:
root@ms ~: cat /etc/apt/sources.list
deb http://mirrors.sohu.com/ubuntu/ jaunty main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ jaunty-updates main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ jaunty-proposed main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ jaunty-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ jaunty main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ jaunty-security main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ jaunty-updates main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ jaunty-proposed main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ jaunty-backports main restricted universe multiverse
安裝下面工具:
root@ms ~: apt-get install apt-mirror
root@ms ~: apt-get install apache2
下面就構建Ubuntu 9.04 32bit 的本地Ubuntu mirror 伺服器為例子,來說明如何配置:
修改配置文件:
root@ms ~: cat /etc/apt/mirror.list
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch
# set postmirror_script $var_path/postmirror.sh
set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
deb-i386 http://mirrors.sohu.com/ubuntu jaunty main restricted universe multiverse
deb-i386 http://mirrors.sohu.com/ubuntu jaunty-security main restricted universe multiverse
deb-i386 http://mirrors.sohu.com/ubuntu jaunty-updates main restricted universe multiverse
#deb http://mirrors.sohu.comubuntu jaunty-proposed main restricted universe multiverse
#deb http://mirrors.sohu.comubuntu jaunty-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu jaunty main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu jaunty-security main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu jaunty-updates main restricted universe multiverse
#deb-src http://mirrors.sohu.com/ubuntu jaunty-proposed main restricted universe multiverse
#deb-src http://mirrors.sohu.com/ubuntu jaunty-backports main restricted universe multiverse
#clean http://archive.ubuntu.com/ubuntu
備註:
deb-i386 http:// 表示下載32 bit 版本的deb 軟體
deb http:// 表示下載64bit 版本的deb 軟體
jaunty 表示Ubuntu 9.04的代號
設置完成後,輸入下面命令:
root@ms ~: apt-mirror
這時系統會啟動20個線程運行wget 到 http://mirrors.sohu.com/Ubuntu 下面下載相應的
deb包。時間比較的長,該命令執行完成後,/var/spool/apt-mirror目錄下就有了所有需
要的deb包和相應的配置文件。
由於我是從sohu下載的,所以實際的文件在 :
/var/spool/apt-mirror/mirror/mirrors.sohu.com/ubuntu 目錄下。
這樣,本地就有了所有Ubuntu Source 伺服器所需要的文件,然後開啟相應的服務:
這里使用apache2作為Web伺服器,默認根目錄在/var/www/,所以可以在該目錄下做
個鏈接,如下所示:
root@ms ~: cd /var/www
root@ms ~: ln /var/spool/apt-mirror/mirror/mirrors.sohu.com/ubuntu -s
開啟web服務:
root@ms ~: apache2ctl start
打開瀏覽器輸入下面地址即可看到和sohu mirror一樣的頁面:
http://192.168.8.173/ubuntu
同時也可以使用crontab進行每天的更新,修改配置文件:
root@ms ~: cat /etc/cron.d/apt-mirror
#
# Regular cron jobs for the apt-mirror package
#
#0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
把命令前面的「#」去掉即可,這樣系統會自動使用apt-mirror去和sohu伺服器更新。
最後,我們所要做得就是在客戶端的機器上修改更新源配置文件,將地址改成本地
mirror伺服器的地址即可,如下所示:
root@ms ~: cat /etc/apt/sources.list
deb http://192.168.8.173/ubuntu/ jaunty main restricted universe multiverse
deb http://192.168.8.173/ubuntu/ jaunty-security main restricted universe multiverse
deb http://192.168.8.173/ubuntu/ jaunty-updates main restricted universe multiverse
deb http://192.168.8.173/ubuntu/ jaunty-proposed main restricted universe multiverse
deb http://192.168.8.173/ubuntu/ jaunty-backports main restricted universe multiverse
deb-src http://192.168.8.173/ubuntu/ jaunty main restricted universe multiverse
deb-src http://192.168.8.173/ubuntu/ jaunty-security main restricted universe multiverse
deb-src http://192.168.8.173/ubuntu/ jaunty-updates main restricted universe multiverse
deb-src http://192.168.8.173/ubuntu/ jaunty-proposed main restricted universe multiverse
deb-src http://192.168.8.173/ubuntu/ jaunty-backports main restricted universe multiverse
執行「apt-get update」來重建本地索引,這樣以後就會使用本地的Mirror 伺服器進行更新
③ 如何做伺服器鏡像
現在有幾個備選方案:
1。程序移植,資料庫仍統一管理。
這種方式最易實現,但存在的問題資料庫必須開放internet通道,如何保證安全,是個問題。而且,訪問速度是否能達到要求同樣是個問題。採用vpn通道?速度上又不能滿足。
2。程序和資料庫都移植。
這種方式能實現的鏡像效果最好,但實施難度較大,在國內網站中實現這種鏡像的還不多。這方案還有2種不同實現方式:
2.1 程序不改,資料庫同步
這種方式相對簡單些,程序部分基本不用改動,依靠sqlserver2000的同步功能來實現數據同步。
但從我在erp項目實施中獲得的經驗看,這種方式看似簡單,但其實問題可能最多。首先,sqlserver同樣繼承了microsoft的老毛病:效率不高。同步復制3G的數據這個速度我實在不樂觀。其次需直接開放internet訪問,如何避免安全問題,還沒想好,還需要找安全專家咨詢。最後,同步復制過程中如果發生網路故障,如何保證多數據源的數據完整性和一致性又是個極大的挑戰。
2.2 平台程序改動,資料庫非同步復制
這種方式對程序的要求較高,網站平台架構的調整較大。等於是把網站由單站點程序轉為多站點平台。這樣在業務和數據一致性上都有較高要求。這種方式工作最大,難度看似也最大,但我認為這種方式最可行。首先,把程序結構按照事務劃分,藉助mts可實現多站點統一事務,保證數據的一致性;其次,數據採用非同步復制,能避免網路中斷造成的數據不完整,防止引起某些邏輯錯誤;最後,這種方式要求我們盡量少的訪問資料庫,由於負載的分擔,可考慮大量的使用內存替代資料庫,提高整體的訪問效率。
不過,由於存在時間差,會造成鏡像站點間的內容不一致的情況,我還沒想好如何解決。 並且,需要開發一個事務調度程序對各鏡像數據進行統一更新維護,每秒可能需要面臨200次的請求,程序性能和效率會是問題,如何採用分布式我也沒想好。
④ Docker+ Kubernetes已成為雲計算的主流(二十六)
最近正在抽時間編寫k8s的相關教程,很是費時,等相關內容初步完成後,再和大家分享。對於k8s,還是上雲更為簡單、穩定並且節省成本,因此我們需要對主流雲服務的容器服務進行了解,以便更好地應用於生產。
主流雲服務容器服務介紹
Docker+ Kubernetes已成為雲計算的主流
亞馬遜AWS
Amazon Web Services (AWS) 是亞馬遜公司旗下雲計算服務平台,為全世界范圍內的客戶提供雲解決方案。AWS面向用戶提供包括彈性計算、存儲、資料庫、應用程序在內的一整套雲計算服務,幫助企業降低IT投入成本和維護成本。
那麼如何在AWS上運行Docker呢?AWS 同時為 Docker 開源解決方案和商業解決方案提供支持,並且可通過多種方式在 AWS 上運行容器:
微軟Azure
Microsoft Azure 是一個開放而靈活的企業級雲計算平台。通過 IaaS + PaaS 幫助用戶加快發展步伐,提高工作效率並節省運營成本。
Azure是一種靈活和支持互操作的平台,它可以被用來創建雲中運行的應用或者通過基於雲的特性來加強現有應用。它開放式的架構給開發者提供了Web應用、互聯設備的應用、個人電腦、伺服器、或者提供最優在線復雜解決方案的選擇。
在容器這塊,Azure同樣的提供了眾多解決方案:
下面我們側重介紹下以下服務:
阿里雲
阿里雲(www.aliyun.com)創立於2009年,是全球領先的雲計算及人工智慧 科技 公司,為200多個國家和地區的企業、開發者和政府機構提供服務。2017年1月阿里雲成為奧運會全球指定雲服務商。2017年8月阿里巴巴財報數據顯示,阿里雲付費雲計算用戶超過100萬。阿里雲致力於以在線公共服務的方式,提供安全、可靠的計算和數據處理能力,讓計算和人工智慧成為普惠 科技 。阿里雲在全球18個地域開放了49個可用區,為全球數十億用戶提供可靠的計算支持。此外,阿里雲為全球客戶部署200多個飛天數據中心,通過底層統一的飛天操作系統,為客戶提供全球獨有的混合雲體驗。
飛天(Apsara)是由阿里雲自主研發、服務全球的超大規模通用計算操作系統。 它可以將遍布全球的百萬級伺服器連成一台超級計算機,以在線公共服務的方式為 社會 提供計算能力。 從PC互聯網到移動互聯網到萬物互聯網,互聯網成為世界新的基礎設施。飛天希望解決人類計算的規模、效率和安全問題。飛天的革命性在於將雲計算的三個方向整合起來:提供足夠強大的計算能力,提供通用的計算能力,提供普惠的計算能力。飛天誕生於2009年2月,目前為全球200多個國家和地區的創新創業企業、政府、機構等提供服務。
同樣,阿里雲對容器也提供了友好的支持:
容器服務提供高性能可伸縮的容器應用管理服務,支持用Docker和Kubernetes進行容器化應用的生命周期管理,提供多種應用發布方式和持續交付能力並支持微服務架構。容器服務簡化了容器管理集群的搭建工作,整合了阿里雲虛擬化、存儲、網路和安全能力,打造雲端最佳容器運行環境。
容器服務 Kubernetes 版(簡稱 ACK)提供高性能可伸縮的容器應用管理能力,支持企業級 Kubernetes 容器化應用的全生命周期管理。容器服務 Kubernetes 版簡化集群的搭建和擴容等工作,整合阿里雲虛擬化、存儲、網路和安全能力,打造雲端最佳的 Kubernetes 容器化應用運行環境。
阿里雲彈性容器實例(Elastic Container Instance)是 Serverless 和容器化的彈性計算服務。用戶無需管理底層 ECS 伺服器,只需要提供打包好的鏡像,即可運行容器,並僅為容器實際運行消耗的資源付費。
容器鏡像服務(Container Registry)提供安全的鏡像託管能力,穩定的國內外鏡像構建服務,便捷的鏡像授權功能,方便用戶進行鏡像全生命周期管理。容器鏡像服務簡化了Registry的搭建運維工作,支持多地域的鏡像託管,並聯合容器服務等雲產品,為用戶打造雲上使用Docker的一體化體驗。
騰訊雲
騰訊雲為騰訊傾力打造的雲計算品牌,以卓越 科技 能力助力各行各業數字化轉型,為全球客戶提供領先的雲計算、大數據、人工智慧服務,以及定製化行業解決方案。其基於QQ、微信、騰訊 游戲 等海量業務的技術錘煉,從基礎架構到精細化運營,從平台實力到生態能力建設,騰訊雲將之整合並面向市場,使之能夠為企業和創業者提供集雲計算、雲數據、雲運營於一體的雲端服務體驗。
在容器這塊,騰訊雲提供了如下解決方案:
騰訊雲容器服務(Tencent Kubernetes Engine ,TKE)基於原生 kubernetes 提供以容器為核心的、高度可擴展的高性能容器管理服務。騰訊雲容器服務完全兼容原生 kubernetes API ,擴展了騰訊雲的 CBS、CLB 等 kubernetes 插件,為容器化的應用提供高效部署、資源調度、服務發現和動態伸縮等一系列完整功能,解決用戶開發、測試及運維過程的環境一致性問題,提高了大規模容器集群管理的便捷性,幫助用戶降低成本,提高效率。容器服務提供免費使用,涉及的其他雲產品另外單獨計費。
容器實例服務(Container Instance Service , CIS)可以幫用戶在雲上快捷、靈活的部署容器,讓用戶專注於構建程序和使用容器而非管理設備上。無需預購 CVM(雲伺服器),就可以在幾秒內啟動一批容器來執行任務。同時,開發者也可以通過 kubernetes API 把已有kubernetes 集群的 pod 調度到 CIS 上以處理突增業務。CIS 根據實際使用的資源計費,可以幫用戶節約計算成本。使用 CIS 可以極大降低用戶部署容器的門檻,降低用戶執行 batch 型任務或處理業務突增的成本。
從上面主流的雲服務中我們可以看到,沒有哪家雲廠商不支持Docker,同樣的,也沒有哪家雲廠商不支持Kubernetes!也就是說,Docker+ Kubernetes已經成為雲計算的主流!
什麼是Kubernetes(k8s)
Kubernetes(簡稱k8s)誕生於谷歌,是一個開源的,用於管理雲平台中多個主機上的容器化的應用,k8s的目標是讓部署容器化的應用簡單並且高效,其提供了應用部署、規劃、更新、維護的機制。
k8s主要有以下特點:
支持公有雲,私有雲,混合雲,多重雲(multi-cloud) 。可以將容器化的工作負載從本地開發計算機無縫移動到生產環境。在本地基礎結構以及公共雲和混合雲中,在不同環境中協調容器,保持一致性。
支持模塊化,插件化,可掛載,可組合。並且k8s的擴展和插件在社區開發者和各大公司的支持下高速增長,用戶可以充分利用這些社區產品/服務以添加各種功能。
支持自動部署,自動重啟,自動復制,自動伸縮/擴展,並且可以定義復雜的容器化應用程序並將其部署在伺服器群集甚至多個群集上——因為k8s會根據所需狀態優化資源。通過內置的自動縮放器,k8s可輕松地水平縮放應用程序,同時自動監視和維護容器的正常運行。
Kubernetes正在塑造應用程序開發和管理的未來
k8s構建於 Google 數十年經驗,一大半來源於 Google 生產環境規模的經驗。結合了社區最佳的想法和實踐,而且還在不斷地高速迭代和更新之中。
她銜著金鑰匙出生,一誕生就廣受歡迎,更是在2017,其打敗了所有的競爭對手,贏得了雲計算的戰爭——主流的雲廠商基本上都紛紛放棄了自己造「輪子」的舉動,終止了各自的容器編排工具,加盟了k8s陣營,其中包括Red Hat、微軟、IBM、阿里、騰訊、華為和甲骨文等。
k8s像風暴一樣席捲了應用開發領域,並且已成為雲原生應用程序(架構、組件、部署和管理方式)的事實標准,大量的開發者和企業正在使用k8s創建由微服務和無伺服器功能組成的現代架構。
Docker+ Kubernetes已成為雲計算的主流
容器是現代軟體交付的未來,而Kubernetes是編排容器的最佳方案(事實上的標准)。
Docker 和Kubernetes相輔相成,聯手打下了雲計算的「萬里江山」。Docker 為打包和分發容器化應用程序提供了一個開放的標准,而 Kubernetes 則協調和管理通過 Docker 創建的分布式容器化應用程序。換句話說,Kubernetes 提供了部署和運行通過Docker生成的應用程序所需的基礎結構。
在主流的雲服務,基於Docker+k8s的新型PaaS平台具有敏捷部署、彈性伸縮、靈活調度、故障自動恢復等優勢,充分滿足業務擴展中的資源支持,因此在短短兩年之內,便從Docker Swarm、Cloud Foundry Diego、Kontena、Apache Mesos、Amazon ECS…等大量對手中脫穎而出,拿下了皇冠。
k8s和Docker的勝利意味著這是有史以來第一次,無論使用哪一種雲平台,研發人員都可以擁有完全相同的計算環境。