Skip to content

Commit 2f9b25b

Browse files
authored
Merge pull request #23 from gyuho/faq2
frontend: update style, add membership FAQ
2 parents 7fcac61 + cad0685 commit 2f9b25b

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

frontend/app/doc/tip/common.component.css

+8
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ footer {
8787
font-size: 15px;
8888
}
8989

90+
.faq-list-title {
91+
color: midnightblue;
92+
text-decoration: none !important;
93+
font-family: 'Open Sans', sans-serif;
94+
font-size: 20px;
95+
font-style: bold;
96+
}
97+
9098
.faq-list {
9199
color: dodgerblue;
92100
text-decoration: none !important;

frontend/app/doc/tip/faq.component.html

+22-3
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,33 @@ <h3 md-subheader>More</h3>
2222

2323
<div class="inner">
2424
<div class="block block-copy half">
25+
<div class="faq-list-title">Distributed system</div>
2526
<a href="/doc/{{version.etcdVersionURL}}/faq#cap-theorem-in-etcd" class="faq-list">CAP theorem in etcd?</a>
27+
<br>
2628
</div>
2729
<div class="block block-copy half">
30+
<div class="faq-list-title">Membership</div>
2831
<a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq-list">Always remove first when replacing member?</a>
32+
<br>
33+
<a href="/doc/{{version.etcdVersionURL}}/faq#why-so-strict-about-membership-change" class="faq-list">Why so strict about membershp change?</a>
34+
<br>
2935
</div>
3036
</div>
3137

3238
<br>
3339
<hr>
3440
<br>
3541

36-
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#cap-theorem-in-etcd" class="faq-title">CAP theorem in etcd?</a></h2>
3742
<div id="cap-theorem-in-etcd"></div>
43+
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#cap-theorem-in-etcd" class="faq-title">CAP theorem in etcd?</a></h2>
3844
<p>
3945
CAP often represents <i>Consistency</i>, <i>Availability</i>, <i>Partition tolerance</i>: you can only pick 2 out of 3. Since network partition is not avoidable, you are left with either consitency or availability when partition happens. That
4046
is, systems with A and P are more tolerant of network faults, but possible to serve stale data. etcd chooses C and P to achieve linearizability with strong consistency.
4147
</p>
4248
<br>
4349

44-
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq-title">Always remove first when replacing member?</a></h2>
4550
<div id="remove-member-first"></div>
51+
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq-title">Always remove first when replacing member?</a></h2>
4652
<p>
4753
When replacing an etcd node, we recommend to remove the member first and then add its replacement. etcd employs distributed consensus based on a quorum model; (n+1)/2 members, a majority, must agree on a proposal before it can be committed to the cluster.
4854
These proposals include key-value updates and membership changes. This model totally avoids any possibility of split brain inconsistency. The downside is permanent quorum loss is catastrophic.
@@ -66,7 +72,20 @@ <h2><a href="/doc/{{version.etcdVersionURL}}/faq#remove-member-first" class="faq
6672
can't be brought up, it's still possible to remove the new member through quorum on the remaining live members.
6773
</p>
6874
<p>
69-
Reference <a href="https://github.com/coreos/etcd/issues/6114" target="_blank" class="normal-link">https://github.com/coreos/etcd/issues/6114</a>
75+
Reference: <a href="https://github.com/coreos/etcd/issues/6114" target="_blank" class="normal-link">https://github.com/coreos/etcd/issues/6114</a>
76+
</p>
77+
<br>
78+
79+
80+
<div id="why-so-strict-about-membership-change"></div>
81+
<h2><a href="/doc/{{version.etcdVersionURL}}/faq#why-so-strict-about-membership-change" class="faq-title">Why so strict about membershp change?</a></h2>
82+
<p>
83+
Abandoning quorum is really risky (especially when the cluster is already in a bad way). We're aware that losing quorum is painful, but disabling quorum on membership could lead to full fledged cluster inconsistency and that would be even worse in many
84+
applications ("disk geometry corruption" being a candidate for most terrifying). It's too dangerous to be a legitimate fix, sorry. Permitting a member add when the cluster is unhealthy is clearly broken and the fix for that, which is safe,
85+
is already inflight.
86+
</p>
87+
<p>
88+
Reference: <a href="https://github.com/coreos/etcd/issues/6103" target="_blank" class="normal-link">https://github.com/coreos/etcd/issues/6103</a>
7089
</p>
7190
<br>
7291
</div>

frontend/app/doc/tip/why.component.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ <h3 md-subheader>More</h3>
2222

2323
<section class="features">
2424
<div class="inner">
25-
<h2><a href="/doc/{{version.etcdVersionURL}}/why#what-is-etcd">What is etcd</a></h2>
2625
<div id="what-is-etcd"></div>
26+
<h2><a href="/doc/{{version.etcdVersionURL}}/why#what-is-etcd">What is etcd</a></h2>
2727
<p>
2828
etcd is distributed reliable key-value store for the most critical data of a distributed system. It is distributed by replicating data to multiple machines, therefore highly available against single point of failures. Using the Raft<sup>[1]</sup> consensus algorithms, etcd gracefully handles network partitions and machine failures, even leader failures.
2929
</p>
@@ -59,25 +59,25 @@ <h3>Highly Available</h3>
5959
</div>
6060

6161
<br>
62-
<h2><a href="/doc/{{version.etcdVersionURL}}/why#use-case-coreos">Use Case: CoreOS</a></h2>
6362
<div id="use-case-coreos"></div>
63+
<h2><a href="/doc/{{version.etcdVersionURL}}/why#use-case-coreos">Use Case: CoreOS</a></h2>
6464
<p>
6565
Application running on <a href="https://coreos.com/why/" target="_blank" class="normal-link">CoreOS</a> gets automatic, no-downtime Linux kernel updates. CoreOS uses
6666
<a href="https://github.com/coreos/locksmith" target="_blank" class="normal-link">locksmith</a> to coordinate those updates. locksmith stores semephore values in etcd. And ensures that only subset of cluster are rebooting at any given
6767
time.
6868
</p>
6969

7070
<br>
71-
<h2><a href="/doc/{{version.etcdVersionURL}}/why#use-case-kubernetes">Use Case: Kubernetes</a></h2>
7271
<div id="use-case-kubernetes"></div>
72+
<h2><a href="/doc/{{version.etcdVersionURL}}/why#use-case-kubernetes">Use Case: Kubernetes</a></h2>
7373
<p>
7474
<a href="http://kubernetes.io/docs/whatisk8s/" target="_blank" class="normal-link">Kubernetes</a> needs configuration storage for service discovery and cluster management. Kubernetes API server writes such persistent cluster states
7575
in etcd. And uses etcd watch API to get notified whenever changes happen. Consistency is the key to ensure that services correctly schedule and operatate.
7676
</p>
7777

7878
<br>
79-
<h2><a href="/doc/{{version.etcdVersionURL}}/why#when-not-to-use">When Not to Use etcd</a></h2>
8079
<div id="when-not-to-use"></div>
80+
<h2><a href="/doc/{{version.etcdVersionURL}}/why#when-not-to-use">When Not to Use etcd</a></h2>
8181
<p>
8282
etcd is designed for storing small chunks of data: configuration file, JSON, YAML, etc. etcd limits the size of one request in 1.5MB (see <a href="https://github.com/coreos/etcd/blob/master/etcdserver/v3_server.go#L34-L38" target="_blank"
8383
class="code-link">maxRequestBytes</a>). And default storage size limit is 2GB (see <a href="https://github.com/coreos/etcd/blob/master/mvcc/backend/backend.go#L46-L53" target="_blank" class="code-link">DefaultQuotaBytes</a>). These

0 commit comments

Comments
 (0)