Bagaimana kami menerobos Tembok Api Besar China (Bahagian 3)
Hello!
Semua cerita yang baik akan berakhir. Dan kisah kami tentang cara kami menghasilkan penyelesaian untuk melepasi Tembok Api Cina dengan cepat tidak terkecuali. Oleh itu, saya bersegera untuk berkongsi dengan anda yang terakhir, bahagian akhir mengenai topik ini.
Pada bahagian sebelumnya kami bercakap tentang banyak bangku ujian yang kami hasilkan dan apakah keputusan yang mereka berikan. Dan kami memutuskan apa yang bagus untuk ditambah CDN! untuk kelikatan ke dalam skema kami.
Saya akan memberitahu anda cara kami menguji Alibaba Cloud CDN, Tencent Cloud CDN dan Akamai, dan perkara yang kami dapati. Dan sudah tentu, mari kita ringkaskan.
Alibaba Cloud CDN
Kami dihoskan di Alibaba Cloud dan menggunakan IPSEC dan CEN daripada mereka. Adalah logik untuk mencuba penyelesaian mereka terlebih dahulu.
Alibaba Cloud mempunyai dua jenis produk yang mungkin sesuai dengan kami: CDN ΠΈ DCDN. Pilihan pertama ialah CDN klasik untuk domain tertentu (subdomain). Pilihan kedua bermaksud Laluan Dinamik untuk CDN (Saya memanggilnya CDN dinamik), ia boleh didayakan dalam mod Tapak Penuh (untuk domain kad bebas), ia juga menyimpan kandungan statik dan mempercepatkan kandungan dinamik pada dirinya sendiri, iaitu, dinamik halaman juga akan dimuatkan melalui pembekal rangkaian pantas. Ini penting bagi kami, kerana pada asasnya tapak kami adalah dinamik, ia menggunakan banyak subdomain, dan lebih mudah untuk menyediakan CDN sekali untuk "asterisk" - *.semrushchina.cn.
Kami telah melihat produk ini pada peringkat awal projek Cina kami, tetapi kemudian ia masih belum berfungsi, dan pembangun berjanji bahawa produk itu akan tersedia untuk semua pelanggan tidak lama lagi. Dan dia melakukannya.
Dalam DCDN anda boleh:
konfigurasikan penamatan SSL dengan sijil anda,
membolehkan pecutan kandungan dinamik,
mengkonfigurasi caching fail statik secara fleksibel,
bersihkan cache,
soket web ke hadapan,
dayakan pemampatan dan juga HTML Beautifier.
Secara umum, semuanya adalah sama seperti orang dewasa dan penyedia CDN yang besar.
Selepas Origin (tempat di mana pelayan tepi CDN akan pergi) ditentukan, yang tinggal hanyalah mencipta CNAME untuk asterisk, merujuk all.semrushchina.cn.w.kunluncan.com (CNAME ini diterima dalam konsol Alibaba Cloud) dan CDN akan berfungsi.
Berdasarkan keputusan ujian, CDN ini banyak membantu kami. Statistik ditunjukkan di bawah.
keputusan
Uptime
median
75 Peratusan
95 Peratusan
CloudFlare
86.6
18s
30s
60s
IPsec
99.79
18s
21s
30s
CEN
99.75
16s
21s
27s
CEN/IPsec + GLB
99.79
13s
16s
25s
Ali CDN + CEN/IPsec + GLB 99.75 10s 12.8s 17.3s
Ini adalah keputusan yang sangat baik, terutamanya jika anda membandingkannya dengan jumlah nombor pada mulanya. Tetapi kami tahu bahawa ujian penyemak imbas versi Amerika laman web kami www.semrush.com dijalankan dari Amerika Syarikat dalam purata 8.3s (nilai yang sangat anggaran). Terdapat ruang untuk penambahbaikan. Selain itu, terdapat juga penyedia CDN yang menarik untuk diuji.
Jadi kami lancar beralih ke gergasi lain di pasaran China - Tencent.
Tencent Awan
Tencent baru sahaja membangunkan awannya - ini boleh dilihat daripada sebilangan kecil produk. Semasa menggunakannya, kami ingin menguji bukan sahaja CDN mereka, tetapi juga infrastruktur rangkaian mereka secara keseluruhan:
adakah mereka mempunyai sesuatu yang serupa dengan CEN?
Bagaimanakah IPSEC berfungsi untuk mereka? Adakah ia pantas, apakah masa beroperasi?
adakah mereka mempunyai Anycast?
Mari kita lihat soalan-soalan ini secara berasingan.
Analog CEN
Tencent ada produk Rangkaian Cloud Connect (CCN), membolehkan anda menyambungkan VPC dari wilayah berbeza, termasuk wilayah di dalam dan luar China. Produk kini dalam versi beta dalaman, dan anda perlu membuat tiket yang meminta untuk menyambung kepadanya. Kami mengetahui daripada sokongan bahawa akaun global (kami tidak bercakap tentang warganegara China atau entiti undang-undang) tidak boleh mengambil bahagian dalam program ujian beta dan, secara amnya, menghubungkan wilayah di dalam China dengan wilayah di luar. 1-0 berpihak kepada Ali Cloud
IPSEC
Wilayah paling selatan Tencent ialah Guangzhou. Kami memasang terowong dan menyambungkannya ke wilayah Hong Kong di GCP (kemudian wilayah ini telah pun tersedia). Terowong kedua di Ali Cloud dari Shenzhen ke Hong Kong juga dinaikkan pada masa yang sama. Ternyata melalui rangkaian Tencent kependaman ke Hong Kong secara amnya lebih baik (10ms) daripada dari Shenzhen ke Hong Kong ke Ali (120ms - apa?). Tetapi ini tidak sama sekali mempercepatkan kerja tapak yang bertujuan untuk bekerja melalui Tencent dan terowong ini, yang dengan sendirinya adalah fakta yang menakjubkan dan sekali lagi membuktikan perkara berikut: kependaman - untuk China ini bukan penunjuk yang benar-benar bernilai memberi perhatian semasa membangunkan penyelesaian untuk melepasi tembok api Cina.
Pecutan Internet Anycast
Produk lain yang membolehkan anda bekerja melalui IP anycast ialah AIA. Tetapi ia juga tidak tersedia untuk akaun global, jadi saya tidak akan memberitahu anda mengenainya, tetapi mengetahui bahawa produk sedemikian wujud mungkin berguna.
Tetapi ujian CDN menunjukkan beberapa keputusan yang cukup menarik. CDN Tencent tidak boleh didayakan pada tapak penuh, hanya pada domain tertentu. Kami membuat domain dan menghantar trafik kepada mereka:
Ternyata CDN ini mempunyai fungsi berikut: Pengoptimuman Trafik Merentas Sempadan. Ciri ini sepatutnya mengurangkan kos apabila trafik melalui tembok api Cina. Sebagai asal Alamat IP Google GLB (GLB anycast) telah ditentukan. Oleh itu, kami ingin memudahkan seni bina projek.
Hasilnya sangat baik - pada tahap Ali Cloud CDN, dan di beberapa tempat lebih baik. Ini mengejutkan, kerana jika ujian berjaya, anda boleh meninggalkan sebahagian besar infrastruktur, terowong, CEN, mesin maya, dll.
Kami tidak bergembira lama, kerana masalah telah didedahkan: ujian dalam Catchpoint gagal untuk pembekal Internet China Mobile. Dari mana-mana lokasi kami menerima tamat masa melalui CDN Tencent. Surat-menyurat dengan sokongan teknikal tidak membawa kepada apa-apa. Kami cuba menyelesaikan masalah ini selama kira-kira sehari, tetapi tiada apa yang berhasil.
Saya berada di China pada masa itu, tetapi tidak dapat mencari Wi-Fi awam pada rangkaian pembekal ini untuk mengesahkan masalah secara peribadi. Jika tidak semuanya kelihatan pantas dan baik.
Walau bagaimanapun, disebabkan China Mobile adalah salah satu daripada tiga pengendali terbesar, kami terpaksa mengembalikan trafik ke Ali CDN.
Tetapi secara keseluruhan, ini adalah penyelesaian yang agak menarik yang memerlukan ujian dan penyelesaian masalah yang lebih lama untuk masalah ini.
Akamai
Pembekal CDN terakhir yang kami uji ialah Akamai. Ini adalah pembekal besar yang mempunyai rangkaiannya di China. Sudah tentu, kami tidak dapat melepasinya.
Sejak awal lagi, kami bersetuju dengan Akamai untuk tempoh percubaan supaya kami boleh menukar domain dan melihat cara ia berfungsi pada rangkaian mereka. Saya akan menerangkan keputusan semua ujian dalam bentuk "Apa yang saya suka" dan "Apa yang saya tidak suka," dan saya juga akan memberikan keputusan ujian.
Apa yang saya suka:
Lelaki dari Akamai sangat membantu dalam semua soalan dan menemani kami pada semua peringkat ujian. Kami sentiasa cuba memperbaiki sesuatu di pihak kami. Mereka memberikan nasihat teknikal yang baik.
Akamai adalah kira-kira 10-15% lebih perlahan daripada penyelesaian kami melalui Ali Cloud CDN. Apa yang mengagumkan ialah dalam Origin for Akamai kami menyatakan alamat IP GLB, bermakna trafik tidak melalui penyelesaian kami (berpotensi kami boleh meninggalkan sebahagian daripada infrastruktur). Namun begitu, keputusan ujian menunjukkan bahawa penyelesaian ini lebih teruk daripada versi semasa kami (keputusan perbandingan di bawah).
Menguji kedua-dua Origin GLB dan Origin di China. Kedua-dua pilihan adalah lebih kurang sama.
Terdapat Laluan Pasti (pengoptimuman penghalaan automatik). Anda boleh mengehoskan objek ujian pada Origin, dan pelayan Akamai Edge akan cuba mengambilnya (GET biasa). Untuk permintaan ini, kelajuan dan metrik lain diukur, berdasarkan rangkaian Akamai mengoptimumkan laluan supaya trafik berjalan lebih pantas untuk tapak kami dan jelas sekali bahawa mendayakan ciri ini benar-benar memberi kesan yang kuat pada kelajuan tapak.
Membuat versi konfigurasi dalam antara muka web adalah hebat. Anda boleh lakukan Bandingkan untuk versi, lihat diff. Lihat versi sebelumnya.
Anda boleh melancarkan versi baharu terlebih dahulu hanya pada rangkaian Akamai Staging - rangkaian yang sama seperti pengeluaran, hanya cara ini tidak akan menjejaskan pengguna sebenar. Untuk ujian ini, anda perlu memalsukan rekod DNS pada mesin tempatan anda.
Kelajuan muat turun yang sangat pantas melalui rangkaian mereka untuk fail statik yang besar, dan, nampaknya, sebarang fail lain. Fail daripada cache "sejuk" diambil berkali-kali lebih cepat daripada fail yang sama daripada cache "sejuk" Ali CDN. Daripada cache "panas", kelajuan sudah sama, tambah atau tolak.
Ujian Ali CDN:
root@shenzhen1:~# curl -o /dev/null -w@curl_time https://en.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5757k 0 5757k 0 0 513k 0 --:--:-- 0:00:11 --:--:-- 526k
time_namelookup: 0.004286
time_connect: 0.030107
time_appconnect: 0.117525
time_pretransfer: 0.117606
time_redirect: 0.000000
time_starttransfer: 0.840348
----------
time_total: 11.208119
----------
size_download: 5895467 Bytes
speed_download: 525999.000B/s
Ujian Akamai:
root@shenzhen1:~# curl -o /dev/null -w@curl_time https://www.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5757k 0 5757k 0 0 1824k 0 --:--:-- 0:00:03 --:--:-- 1825k
time_namelookup: 0.509005
time_connect: 0.528261
time_appconnect: 0.577235
time_pretransfer: 0.577324
time_redirect: 0.000000
time_starttransfer: 1.327013
----------
time_total: 3.154850
----------
size_download: 5895467 Bytes
speed_download: 1868699.000B/s
Kami mendapati bahawa keadaan dalam contoh di atas bergantung kepada pelbagai faktor. Pada masa menulis perkara ini, saya menjalankan ujian sekali lagi. Keputusan untuk kedua-dua platform adalah lebih kurang sama. Ini memberitahu kita bahawa Internet di China, walaupun untuk pengendali besar dan penyedia awan, berkelakuan berbeza dari semasa ke semasa.
Pada titik sebelumnya, saya akan menambah tambah besar untuk Akamai: jika Ali menunjukkan kilatan prestasi tinggi dan prestasi sangat rendah yang serupa (ini terpakai kepada Ali CDN, Ali CEN dan Ali IPSEC), maka Akamai, setiap masa, tidak kira bagaimana saya menguji rangkaian mereka, semuanya berfungsi dengan stabil.
Akamai mempunyai banyak liputan di China dan berfungsi melalui banyak pembekal.
Perkara yang saya tidak suka:
Saya tidak suka antara muka web dan cara ia berfungsi - ia sangat buruk. Tetapi pada dasarnya anda terbiasa dengannya (mungkin).
Keputusan ujian lebih teruk daripada tapak kami.
Terdapat lebih banyak ralat semasa ujian berbanding di tapak kami (masa aktif di bawah).
Kami tidak mempunyai pelayan DNS kami sendiri di China. Oleh itu terdapat banyak ralat dalam ujian kerana tamat masa penyelesaian DNS.
Mereka tidak menyediakan julat IP mereka -> tidak ada cara untuk mendaftarkan julat yang betul set_ip_sebenar daripada pada pelayan kami.
Metrik (~3626 larian; semua metrik kecuali Uptime, dalam ms; statistik untuk satu tempoh masa):
Pembekal CDN
median
75%
95%
Tindak balas
Respons halaman web
Uptime
DNS
Hubungi
Tunggu
Muatkan
SSL
Kesimpulannya ialah: pilihan Akamai berdaya maju, tetapi tidak memberikan kestabilan dan kelajuan yang sama seperti penyelesaian kami sendiri ditambah dengan Ali CDN.
Nota kecil
Beberapa detik tidak disertakan dalam cerita, tetapi saya ingin menulis tentangnya juga.
Beijing + Tokyo dan Hong Kong
Seperti yang saya katakan di atas, kami menguji terowong IPSEC ke Hong Kong (HK). Tetapi kami juga menguji CEN ke HK. Kosnya kurang sedikit, dan saya tertanya-tanya bagaimana ia akan berfungsi antara bandar dengan jarak ~100 km. Ternyata menarik bahawa kependaman antara bandar-bandar ini adalah 100ms lebih tinggi daripada versi asal kami (ke Taiwan). Kelajuan, kestabilan juga lebih baik untuk Taiwan. Akibatnya, kami meninggalkan HK sebagai wilayah IPSEC sandaran.
Di samping itu, kami cuba memasang pemasangan berikut:
penamatan pelanggan di Beijing,
IPSEC dan CEN ke Tokyo,
dalam Ali CDN pelayan di Beijing ditunjukkan sebagai asal.
Skim ini tidak begitu stabil, walaupun dari segi kelajuan ia secara amnya tidak kalah dengan penyelesaian kami. Mengenai terowong, saya telah melihat kejatuhan sekejap walaupun untuk CEN, yang sepatutnya stabil. Oleh itu, kami kembali kepada skema lama dan membongkar pementasan ini.
Di bawah ialah statistik tentang kependaman antara kawasan yang berbeza untuk saluran yang berbeza. Mungkin ada yang berminat dengannya.
IPsec
Ali cn-beijing <β> GCP asia-timur laut1 β 193ms
Ali cn-shenzhen <β> GCP asia-east2 β 91ms
Ali cn-shenzhen <β> GCP us-east4 β 200ms
CEN
Ali cn-beijing <β> Ali ap-timur laut-1 β 54ms (!)
Ali cn-shenzhen <β> Ali cn-hongkong β 6ms (!)
Ali cn-shenzhen <β> Ali us-east1 β 216ms
Maklumat am tentang Internet di China
Sebagai tambahan kepada masalah dengan Internet yang diterangkan pada awalnya, di bahagian pertama artikel.
Internet di China agak laju di dalamnya.
Kesimpulan dibuat berdasarkan ujian rangkaian Wi-Fi awam di pelbagai lokasi di mana rangkaian ini digunakan oleh sebilangan besar orang.
Kelajuan muat turun dan muat naik ke pelayan di dalam China adalah kira-kira 20 Mbit/s dan 5-10 Mbit/s, masing-masing.
Kelajuan ke pelayan di luar China hanya sedikit, kurang daripada 1 Mbit/s.
Internet di China tidak begitu stabil.
Kadangkala tapak boleh dibuka dengan cepat, kadangkala perlahan (pada masa hari yang sama pada hari yang berbeza), dengan syarat konfigurasi tidak berubah. Kami memerhatikan ini dengan contoh semrushchina.cn. Ini boleh dikaitkan dengan Ali CDN, yang juga berfungsi dengan cara ini dan bergantung pada masa hari, kedudukan bintang, dsb.
Internet Mudah Alih terdapat hampir di mana-mana 4G atau 4G+. Tangkap di kereta bawah tanah, lif - ringkasnya, di mana-mana.
Adalah mitos bahawa pengguna China hanya mempercayai domain dalam zon .cn. Kami mempelajari ini secara langsung daripada pengguna.
Anda boleh lihat bagaimana http://baidu.cn ubah hala ke www.baidu.com (di tanah besar China juga).
Banyak sumber memang disekat. Primitif: google.com, Facebook, Twitter. Tetapi banyak sumber Google berfungsi (sudah tentu, tidak pada semua Wi-Fi dan VPN tidak digunakan (di bahagian penghala juga, itu pasti).
Banyak domain "teknikal" syarikat yang disekat juga berfungsi. Ini bermakna anda tidak boleh selalu memotong semua Google dan sumber lain yang kelihatan disekat secara melulu. Anda perlu mencari beberapa senarai domain yang dilarang.
Mereka hanya mempunyai tiga pengendali Internet utama: China Unicom, China Telecom, China Mobile. Terdapat yang lebih kecil, tetapi bahagian pasaran mereka tidak penting
Bonus: gambarajah penyelesaian akhir
Jumlah
Setahun telah berlalu sejak permulaan projek. Kami bermula dengan fakta bahawa tapak kami pada umumnya enggan berfungsi seperti biasa dari China, dan hanya GET curl mengambil masa 5.5 saat.
Kemudian, dengan penunjuk ini dalam penyelesaian pertama (Cloudflare):
keputusan
Uptime
median
75 Peratusan
95 Peratusan
CloudFlare
86.6
18s
30s
60s
Kami akhirnya mencapai keputusan berikut (statistik untuk bulan lalu):
keputusan
Uptime
median
75 Peratusan
95 Peratusan
Ali CDN + CEN/IPsec + GLB
99.86
8.8s
9.5s
13.7s
Seperti yang anda lihat, kami masih belum dapat mencapai masa operasi 100%, tetapi kami akan menghasilkan sesuatu, dan kemudian kami akan memberitahu anda tentang keputusan dalam artikel baharu :)
Hormat kepada yang membaca ketiga-tiga bahagian tersebut hingga habis. Saya harap anda mendapati semua ini menarik seperti yang saya lakukan semasa saya melakukannya.