Avoiding replay attack on certified announcements
[let] the last 8 bytes be the HMAC(key, msg)


64 bits is a pretty small tag size, and not considered "cryptographically strong".  I would suggest using the full HMAC output if possible, or see here for some discussion of reduced tag length.


  should this scheme avoid replay attack?


Assuming that the HMAC cannot be broken (which would imply that the key is kept secure and a sufficient tag size is used), this scheme looks fine against replay attacks.

(I suggest opening a new question with regard to your key derivation scheme)